std::chrono::system_clock
的rep
类型必须是有符号算术类型,而steady_clock
和high_resolution_clock
(以及自定义时钟类型)不需要具有有符号rep
类型。
这种差异的原理是什么?使用无符号rep
类型的时钟会有什么后果?
std::chrono::system_clock
的rep
类型必须是有符号算术类型,而steady_clock
和high_resolution_clock
(以及自定义时钟类型)不需要具有有符号rep
类型。
这种差异的原理是什么?使用无符号rep
类型的时钟会有什么后果?
steady_clock
和high_resolution_clock
有更多自由。但事实证明,这种自由并不必要,因为到目前为止所有的实现都使用了带符号整数类型。rep
会导致这些时钟的duration
嵌套类型不属于六种“预定义”的持续时间之一。nanoseconds
microseconds
milliseconds
seconds
minutes
hours
rep
时,时钟的客户端必须小心地将time_point
从该时钟中减去:当t0<t1
时,减去t0-t1
会导致无符号溢出值:定义良好,但可能出乎意料。system_clock
,是因为希望system_clock
跟踪Unix Time,并且我想要求在1970-01-01 00:00:00 UTC之前的日期时间可以在system_clock::time_point
中表示。 system_clock
是唯一必须与人类日历相关联的时钟。system_clock::time_point
之间进行转换,包括1970年01月01日00:00:00 UTC之前的日期时间。steady_clock
仍然是一个“秒表”:非常适合计时,但与人类日历没有任何关系。