Namespaces
Variants

std:: copy_constructible

From cppreference.net
定義先ヘッダ <concepts>
template < class T >

concept copy_constructible =
std:: move_constructible < T > &&
std:: constructible_from < T, T & > && std:: convertible_to < T & , T > &&
std:: constructible_from < T, const T & > && std:: convertible_to < const T & , T > &&

std:: constructible_from < T, const T > && std:: convertible_to < const T, T > ;
(C++20以降)

copy_constructible の概念は、 T が左辺値参照型である場合、または move_constructible オブジェクト型であり、その型のオブジェクトが(const修飾された可能性のある)左辺値またはconst右辺値から、直接初期化とコピー初期化の両方のコンテキストで通常のセマンティクス(コピーが作成され、ソースは変更されない)で構築できる場合に満たされます。

セマンティック要件

T がオブジェクト型である場合、 copy_constructible<T> は以下の条件が与えられたときにのみモデル化されます

  • v 、型(場合によっては const T の左辺値、または型 const T の右辺値、

以下が真実です:

  • 定義 T u = v ; の後、 u v と等しく、 v は変更されない。
  • T ( v ) v と等しく、 v を変更しない。

参考文献

  • C++23規格 (ISO/IEC 14882:2024):
  • 18.4.14 コンセプト copy_constructible [concept.copyconstructible]
  • C++20標準 (ISO/IEC 14882:2020):
  • 18.4.14 コンセプト copy_constructible [concept.copyconstructible]

関連項目

型がコピーコンストラクタを持つかどうかをチェックする
(クラステンプレート)