Handling time

Unlike many other libraries where time is a uint32 number of milliseconds, or a float number of seconds, SFML doesn't impose any specific unit or
type for time values. Instead it leaves this choice to the user through a flexible class: sf::Time. All SFML classes and functions
that manipulate time values use this class.

sf::Time represents a time period (in other words, the time that elapses between two events). It is not a date-time class which would represent the
current year/month/day/hour/minute/second as a timestamp, it's just a value that represents a certain amount of time, and how to interpret it depends on the context
where it is used.

Note that restart also returns the elapsed time, so that you can avoid the slight gap that would exist if you had to call
getElapsedTime explicitly before restart.
Here is an example that uses the time elapsed at each iteration of the game loop to update the game logic: