名稱空間
變體
操作

decay-copy

來自 cppreference.com
< cpp‎ | 標準庫
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>>
constexpr std::decay_t<T> decay-copy( T&& value )

    noexcept(std::is_nothrow_convertible_v<T, std::decay_t<T>>);
(C++20 起)
(僅作說明*)

返回 std::forward<T>(value)(隱式轉換為衰減型別),即 value 的衰減純右值副本。

目錄

[編輯] 引數

value - 要複製的值

[編輯] 返回值

作為純右值的 value 的衰減副本。

[編輯] 註解

decay-copyLWG issue 929 的解決方案引入。它最初用於併發支援庫中,以確保在按值傳遞時引數被衰減,後來在範圍庫中使用。

C++23 中引入的語言特性 auto(x) 也允許建立衰減副本作為純右值。唯一的區別是 decay-copy 總是實體化 value 並生成一個副本,而如果 expr 是一個純右值,則 auto(expr) 是一個空操作。

自 C++23 起,標準庫中除了 views::allranges::take_viewranges::drop_view 之外的所有 decay-copy 用法都被 auto(x) 替換。

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 3724 C++20 decay-copy 未受約束 已受約束

[編輯] 另請參閱

構造新的 thread 物件
(std::thread 的公共成員函式) [編輯]
構造新的 jthread 物件
(std::jthread 的公共成員函式) [編輯]
(C++11)
非同步(可能在新執行緒中)執行一個函式並返回一個將儲存結果的 std::future
(函式模板) [編輯]
返回指向範圍開頭的迭代器
(定製點物件)[編輯]
返回指示範圍末尾的哨兵
(定製點物件)[編輯]
返回指向範圍的反向迭代器
(定製點物件)[編輯]
返回指向範圍的反向結束迭代器
(定製點物件)[編輯]
返回等於範圍大小的整數
(定製點物件)[編輯]
獲取指向連續範圍開頭的指標
(定製點物件)[編輯]
包含range所有元素的view
(別名模板) (範圍介面卡物件)[編輯]
由另一個view的前N個元素組成的view
(類模板) (範圍介面卡物件)[編輯]
由另一個view的元素組成的view,跳過前N個元素
(類模板) (範圍介面卡物件)[編輯]