use*_*622 5 c++ duration clock c++-chrono
chrono::steady_clock由4种成员类型的:rep,period,duration,和timepoint.
chrono::steady_clock::duration是一个chrono::duration<rep,period>.
chrono::steady_clock::period是一个ratio.
各种类型chrono::steady_clock::duration和chrono::steady_clock::period决定如何?
例如,
chrono::steady_clock::duration可能是chrono::duration<int,period>时期ratio<1,1000>
要么
chrono::steady_clock::duration可能是chrono::duration<double,period>时期ratio<1,1000000>.
chrono::steady_clock由4种成员类型的:rep,period,duration,和timepoint.
chrono::stead_clock::duration是一个chrono::duration<rep,period>.chrono::steady_clock::period是一个ratio.
是.
各种类型
chrono::stead_clock::duration和chrono::steady_clock::period决定如何?
它们在某种程度上是特定于实现的,但在这些类型中确实存在约束和不变量.
1. rep必须是一个非常好的算术类型.它必须具有默认构造函数,复制构造函数,复制赋值,并且它具有非令人惊讶的语义,并且不会抛出异常.事实上的标准是所有steady_clock::rep都是有符号的整数64位类型.
2. period几乎在空中.话虽如此,VS,libstdc ++和libc ++都已steady_clock::period设置为nano.
3. duration必须与rep和之间有非常具体的关系period: is_same<duration, chrono::duration<rep, period>>{}是true_type.如果您duration首先指定并从中派生rep,那么无关紧要period,反之亦然.但必须保持不变量.
4. time_point应该是std::chrono::time_point一个持续时间为的实例duration.没有具体说明time_point时钟是什么.无论那个时钟是什么类型,它必须具有相同的时代steady_clock.这可以说是一个缺陷,应该有一个约束steady_clock::time_point::clock的steady_clock.事实上的标准是这种约束成立.