如何确定 chrono::steady_clock 的代表和周期类型?
How is chrono::steady_clock's rep and period types determined?
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
的约束。事实上的标准是这个约束成立。
标准未指定rep
和period
。每个标准库实现都可以选择自己的实现。如果他们使用的底层计时调用的精度为100ns,那么选择std::ratio<100, 1000000000>
的周期似乎是一个好主意。
这些类型必须满足一些要求,但这在很大程度上取决于实现。
duration
总是基于rep
和period
…std::chrono::duration<rep, period>
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 访问者访问变体并返回不同类型时出错
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 模板元程序查找相似的连续类型名称
- 是否可以从int转换为enum类类型
- 如何确定 chrono::steady_clock 的代表和周期类型?
- 如何管理"shortest of"类型的生命周期?
- 类型转换是否消耗额外的CPU周期?