It could be your operating system wanting to cut into your processor time since it's running at 100%. Consider setting a framerate limit or adding vsync. Or, at least, add a tiny sleep to allow the OS chance to be involved.
Could it also be the output stream getting full? You're outputting to it every frame (since pretty much the beginning) and it could be getting "unhappy" with that after 6 minutes.
Also, are you running in debug or release mode?
Other stuff...
FPSClock.restart().asSeconds();
restart() actually returns the current time before restarting and you're converting it to seconds. However, you're not actually using this value so you can remove the to-seconds conversion (just restart is fine, as you did on the following line).
A suggestion, then, is to use restart instead of getElapsedTime():
sf::Time time = FPSClock.restart();
Again, you already did this with dt...
Not sure why there are square brackets at the beginning and end of your code.