提问人:Super-intelligent Shade 提问时间:8/18/2017 最后编辑:Super-intelligent Shade 更新时间:8/18/2017 访问量:516
为什么标准库中没有按值传递 std::chrono::d uration 实例?
Why aren't std::chrono::duration instances passed by value in the Standard Library?
问:
根据 cppreference.com:
持续时间中存储的唯一数据是 Rep 类型的刻度计数。
但是,我注意到例如:
this_thread::sleep_for
由 const ref.sleep_duration
future::wait_for
同样由 const ref 采用。duration
等。
(1) 为什么它们不是按值传递的,有什么特别的原因吗?
(1a) 传递常量引用是否会使一些可能的优化变得悲观?constexpr
答:
8赞
Howard Hinnant
8/18/2017
#1
这是一个判断电话。与函数将要执行的操作(睡眠)的成本相比,“内置”持续时间的常见情况的成本很小。而且我不想考虑包含复制成本可能很高的自定义持续时间(例如 BigNum)的按值传递的成本。Rep
评论
thread::sleep_for
future::wait_for
this_thread::sleep_for(10ms)
10ms
sleep_for
10ms