getElapsedTime() returns the elapsed time since the last call to restart()
restart() restarts the internal counter AND returns the elapsed time since the last call to restart()
If you only call
getElapsedTime() the internal counter will never get reset, but it would count on. Since you're always adding the elapsed time to your CurrentTime object, you're essentially doing too much work and your code could even be further simplified by removing CurrentTime completely:
std::cout << Timer.getElapsedTime().asMilliseconds() << std::endl;
If you however want to reuse the elapsed time and want to reset the counter as soon as you got the elapsed time, you should use restart(), otherwise you'll get the elapsed time and once you reset the timer, it might already have propagated 1-2ms further.
CurrentTime += Timer.getElapsedTime();
// 1ms, 2ms, ...
Timer.restart() // We lost 2ms
//------------------------------
CurrentTime += Timer.restart() // We lost 0ms