It clarifies adding output with finer units, for example:
cout << "Difference = " << std::chrono::duration_cast<std::chrono::milliseconds>(stop-start).count() << endl;
For me, in the third case (argument 2 seconds), the output is:
Difference = -998
(i.e. in milliseconds)
, T0 now(), CheckDuration. :
start == T0 + 2s
stop T0, 1 , , epsilon. :
stop == T0 + 1s + epsilon
, :
T0 + 1s + epsilon - (T0 + 2s)
:
epsilon - 1s
, epsilon == 2ms
duration_cast , . -998ms 0s. , , .:
http://howardhinnant.imtqy.com/duration_io/chrono_util.html