为什么 std::chrono::duration 个实例在标准库中不是按值传递的?
Why aren't std::chrono::duration instances passed by value in the Standard Library?
The only data stored in a duration is a tick count of type Rep.
但是,我注意到例如:
this_thread::sleep_for
通过 const ref.
获取 sleep_duration
future::wait_for
同样采用 const ref.duration
等等
(1) 为什么它们不是按值传递的任何特定原因?
(1a) 是否通过 const 引用传递悲观一些可能的 constexpr
优化?
这是一个判断电话。 "built-in" 持续时间的常见情况的成本与函数将要执行的操作(睡眠)的成本相比很小。而且我不想考虑包含自定义 Rep
的自定义持续时间的按值传递成本,复制起来可能很昂贵(例如 BigNum)。
The only data stored in a duration is a tick count of type Rep.
但是,我注意到例如:
this_thread::sleep_for
通过 const ref.
sleep_duration
future::wait_for
同样采用 const ref.duration
等等
(1) 为什么它们不是按值传递的任何特定原因?
(1a) 是否通过 const 引用传递悲观一些可能的 constexpr
优化?
这是一个判断电话。 "built-in" 持续时间的常见情况的成本与函数将要执行的操作(睡眠)的成本相比很小。而且我不想考虑包含自定义 Rep
的自定义持续时间的按值传递成本,复制起来可能很昂贵(例如 BigNum)。