With Visual Studio 2012 (VC11) there is support for the std::chrono library.
As noted in the documentation (http://msdn.microsoft.com/en-us/library/hh874790(v=vs.110).aspx) the std::chrono::steady_clock should be steady.
But thats not true. If you change the system-clock backwards the std::chrono::steady_clock::now() can give a lesser value than before. That's violates the standard and the documentation.
As I looked through the code I see that 'GetSystemTimeAsFileTime' is called for steady_clock, system_lock and high_resolution_clock. But that function is not steady and does not have a high-resolution.
Code-Snippet to reproduce:
auto start = std::chrono::steady_clock::now();
std::chrono::seconds dura( 120 );
std::this_thread::sleep_for( dura );
//During that Sleeping-Period change the system-lock 1h backwards.
auto end = std::chrono::steady_clock::now();
auto timeElapsed = end - start;
//the timeElapsed is totally wrong