为什么std :: chrono :: duration实例不是通过标准库中的值传递的?

Inn*_*der 2 pass-by-reference pass-by-value constexpr c++11

根据cppreference.com:

存储在持续时间中的唯一数据是Rep类型的刻度计数.

但是,我注意到了例如:

this_thread::sleep_for采用sleep_durationconst ref.

future::wait_for同样需要durationconst ref.

等等

(1)他们没有通过价值而被转移的任何特殊原因?

(1a)通过const引用传递是否会使一些可能的constexpr优化变得悲观?

How*_*ant 5

这是一个判断电话.与功能(睡眠)的成本相比,"内置"持续时间的常见情况的成本很小.而且我不想考虑自定义持续时间的传值成本,该自定义持续时间包含Rep复制可能很昂贵的自定义(例如BigNum).

  • 啊,所以这是你的错......谢谢霍华德.;)好点,关于BigFoot ...我的意思是BigNum (2认同)