c++ - chrono 库中的 Clock 和 TrivialClock 概念

标签 c++ language-lawyer c++17 c++-chrono c++-concepts

std::chrono 库部分依赖于 Clock 的概念。和一个TrivialClock 。我检查了标准,但我仍然不确定一些事情:

  • ClockTrivialClock 之间的唯一区别是 now 可能会抛出 Clock,但对于 TrivialClock 则不然?
  • clock::duration 是否需要与 clock::time_point::duration 相同?
  • now 是否必须是静态函数成员?

欢迎引用/引用该标准。

最佳答案

  • Is the only difference between Clock and TrivialClock, the fact that now may throw for a Clock, but does not for a TrivialClock?

没有。对TrivialClock的成员(member)类型也有更多的要求。带有 const int 的时钟作为其 rep不是TrivialClock ,但它是 Clock .

  • Is clock::duration required to be the same as clock::time_point::duration?

是的。两个可能的实例化是 std::time_point<clock> ,其中有 clock::duration从默认参数;或std::time_point<other_clock, clock::duration> ,其中明确指出了这一点。

  • Is now required to be a static function member, or not?

据我所知,情况并非如此,但人们可能会认为是这样。所需要的只是 clock::now()是一个有效的表达式,它返回 clock::time_point 。它可能是一个静态仿函数。

关于c++ - chrono 库中的 Clock 和 TrivialClock 概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51818177/

相关文章:

javascript - 将 JavaScript 数字 n 转换为字符串 s,使得 Object.is(eval(s), n) 对于所有 n?

c++ - 在这种情况下,我应该使用 lock_guard、scoped_lock 还是 unique_lock?

c++ - 为什么 std::atomic 构造函数在 C++14 和 C++17 中的行为不同

c++ - g++ 和 clang++ - 删除重载转换运算符歧义获取的指针

c++ - 在 Windows 上使用多线程文件 IO 的 SHARING_VIOLATION

c++ - 既然字符串文字被认为是左值,为什么绑定(bind)左值引用必须是 const?

c++ - 具有原子状态的单例模式

c++ - C++ 示例 "Memory barrier"

c++ - 具有继承性的未声明标识符(operator ostream)

c++ - 了解常量表达式