据cppreference.com:标准库中的值为什么不是std :: chrono :: duration实例传递的值?
存储在时间的唯一数据类型代表的蜱计数
不过,我已经注意到,例如:
this_thread::sleep_for
需要sleep_duration
通过const ref。
future::wait_for
同样需要duration
通过const ref。
等
(1)为什么它们没有通过值传递的任何特定原因?
(1a)通过const引用是否会传递一些可能的constexpr
优化?
Re(1a):你是在作为一般指南还是在'thread :: sleep_for'和'future :: wait_for'的上下文中提问?如果你在后者的背景下提出要求,那对我来说是毫无意义的。你不可能优化一个预计会在某段时间内做某事的函数。 –
@RSahu让我思考的事情是,如果我调用'this_thread :: sleep_for(10ms)',编译器将不得不在某处存储'10ms',例如在堆栈上,然后将其地址传递给'sleep_for'然后从地址中提取10并将其传递给底层的睡眠功能。然而,按值传递'10ms'会将其传递到寄存器中,从而避免不必要的写入/读取。最终它可能会被编译器优化掉,所以我可能不应该担心。 –
也许我应该问它作为一个单独的问题 –