std::copy_constructible
From cppreference.com
| ヘッダ <concepts> で定義 |
||
| template< class T > concept copy_constructible = |
(C++20以降) | |
コンセプト `copy_constructible` は、`T` が左辺値参照型である場合、または `T` が move_constructible なオブジェクト型であり、その型のオブジェクトが、(場合によっては `const` 修飾された) 左辺値、または `const` 修飾された右辺値から、直接初期化およびコピー初期化の両方のコンテキストにおいて、通常の意味(ソースは変更されずにコピーが構築される)で構築できる場合に満たされます。
[edit] 意味的要件
もし `T` がオブジェクト型である場合、`copy_constructible<T>` は以下の場合のみモデル化されます。
- v、型 (場合によっては `const` 修飾された) `T` の左辺値、または `const T` 型の右辺値が与えられた場合、
以下の条件が真である。
- `T u = v;` の定義の後、`u` は `v` と等しく、`v` は変更されない。
- `T(v)` は `v` と等しく、`v` を変更しない。
[edit] 参考文献
- C++23標準 (ISO/IEC 14882:2024)
- 18.4.14 コンセプト `copy_constructible` [concept.copyconstructible]
- C++20 standard (ISO/IEC 14882:2020)
- 18.4.14 コンセプト `copy_constructible` [concept.copyconstructible]
[edit] 関連項目
| (C++11)(C++11)(C++11) |
型がコピーコンストラクタを持つかをチェックする (クラステンプレート) |