decay-copy
來自 cppreference.com
template< class T > typename std::decay<T>::type decay-copy( T&& value ); |
(C++11 起) (C++20 前) (僅作說明*) |
|
template< class T > requires std::convertible_to<T, std::decay_t<T>> |
(C++20 起) (僅作說明*) |
|
返回 std::forward<T>(value)(隱式轉換為衰減型別),即 value 的衰減純右值副本。
目錄 |
[編輯] 引數
value | - | 要複製的值 |
[編輯] 返回值
作為純右值的 value 的衰減副本。
[編輯] 註解
decay-copy
由 LWG issue 929 的解決方案引入。它最初用於併發支援庫中,以確保在按值傳遞時引數被衰減,後來在範圍庫中使用。
C++23 中引入的語言特性 auto(x) 也允許建立衰減副本作為純右值。唯一的區別是 decay-copy
總是實體化 value 並生成一個副本,而如果 expr 是一個純右值,則 auto(expr) 是一個空操作。
自 C++23 起,標準庫中除了 views::all、ranges::take_view 和 ranges::drop_view 之外的所有 decay-copy
用法都被 auto(x) 替換。
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 3724 | C++20 | decay-copy 未受約束 |
已受約束 |
[編輯] 另請參閱
構造新的 thread 物件( std::thread 的公共成員函式) | |
構造新的 jthread 物件( std::jthread 的公共成員函式) | |
(C++11) |
非同步(可能在新執行緒中)執行一個函式並返回一個將儲存結果的 std::future (函式模板) |
(C++20) |
返回指向範圍開頭的迭代器 (定製點物件) |
(C++20) |
返回指示範圍末尾的哨兵 (定製點物件) |
(C++20) |
返回指向範圍的反向迭代器 (定製點物件) |
(C++20) |
返回指向範圍的反向結束迭代器 (定製點物件) |
(C++20) |
返回等於範圍大小的整數 (定製點物件) |
(C++20) |
獲取指向連續範圍開頭的指標 (定製點物件) |
(C++20) |
包含range 所有元素的view (別名模板) (範圍介面卡物件) |
(C++20) |
由另一個view 的前N個元素組成的view (類模板) (範圍介面卡物件) |
(C++20) |
由另一個view 的元素組成的view ,跳過前N個元素(類模板) (範圍介面卡物件) |