decay-copy
|
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 の減衰されたprvalueコピーを返します。
目次 |
パラメータ
| value | - | コピーされる値 |
戻り値
value の減衰コピーをprvalueとして。
注記
decay-copy
は
LWG issue 929
の解決によって導入されました。当初は
並行性サポートライブラリ
で値渡しの際に引数が decay されることを保証するために使用され、後に
ranges ライブラリ
でも使用されるようになりました。
C++23で導入された言語機能
auto
(
x
)
も、減衰コピーをprvalueとして作成することを可能にします。唯一の違いは、
decay-copy
が常に
実体化
value
を行いコピーを生成するのに対し、
auto
(
expr
)
は
expr
がprvalueの場合には何も行わない点です。
標準ライブラリにおける
decay-copy
の使用(下記参照)は、
views::all
、
ranges::take_view
および
ranges::drop_view
を除き、C++23以降
auto
(
x
)
で置き換えられています。
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| 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
の最初のN個の要素をスキップした要素からなる
view
(クラステンプレート) (範囲アダプタオブジェクト) |