The fact that there are three different types of clocks begs the question: What are the differences?
std::chrono::steady_clock: is the only clock to provide the guarantee that you can not adjust it. Therefore,
std::chrono::steady_clockis the preferred clock to wait for a time duration or until a time point
std::chrono::high_resolution_clock: is the clock with the highest accuracy, but it can simply be an alias for the clocks
No guarantees about accuracy, starting point, and valid time range
The C++ standard provides no guarantee about the accuracy, the starting point, or the valid time range of the clocks. Typically, the starting point of
std::chrono:system_clockis the 1.1.1970, the so called UNIX-epoch, while for
std::chrono::steady_clockit is typically the boot time of your PC.
Accuracy and Steadiness
It is quite interesting to know which clocks are steady and what accuracy they provide. Steady means that the time points can not decrease. You can get the answers directly from the clocks.