std::move_constructible
From cppreference.com
| ヘッダ <concepts> で定義 |
||
| template< class T > concept move_constructible = std::constructible_from<T, T> && std::convertible_to<T, T>; |
(C++20以降) | |
コンセプト `move_constructible` は、`T` が参照型であるか、またはその型のオブジェクトをその型の右辺値から、通常の意味論で、直接初期化およびコピー初期化の両方のコンテキストで構築できるオブジェクト型である場合に満たされます。
[編集] 意味要件
T がオブジェクト型の場合、`move_constructible<T>` は、以下が与えられた場合にのみモデル化されます。
-
rv、型 `T` の右辺値、および -
u2、`rv` と等しい型 `T` の別のオブジェクト。
以下の条件が真である。
- 定義 T u = rv; の後、`u` は `u2` と等しい。
-
T(rv)は `u2` と等しい。 - もし `T` が const 修飾されていない場合、`rv` の結果の状態(上記のいずれかの箇条書きで定義/式が評価された後)は有効であるが未指定である。それ以外の場合、それは変更されない。
[編集] 参照
- C++23標準 (ISO/IEC 14882:2024)
- 18.4.13 コンセプト `move_constructible` [concept.moveconstructible]
- C++20 standard (ISO/IEC 14882:2020)
- 18.4.13 コンセプト `move_constructible` [concept.moveconstructible]
[編集] 関連項目
| (C++11)(C++11)(C++11) |
型が右辺値参照から構築可能であるかをチェックする (クラステンプレート) |