據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'會將其傳遞到寄存器中,從而避免不必要的寫入/讀取。最終它可能會被編譯器優化掉,所以我可能不應該擔心。 –
也許我應該問它作爲一個單獨的問題 –