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 가 lvalue 참조 타입이거나, 해당 타입의 객체가 (const일 수 있는) lvalue 또는 const rvalue로부터 직접 초기화 및 복사 초기화 컨텍스트에서 일반적인 의미론으로 생성 가능한 move_constructible 객체 타입일 경우 충족됩니다 (복사본이 생성되고 소스는 변경되지 않음).

의미론적 요구사항

만약 T 가 객체 타입이라면, copy_constructible<T> 는 다음이 주어졌을 때만 모델됩니다

  • v , (가능성 있게 const ) 타입 T 의 lvalue 또는 const T 타입의 rvalue,

다음은 참입니다:

  • 정의 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 Concept copy_constructible [concept.copyconstructible]

참고 항목

타입이 복사 생성자를 가지는지 검사합니다
(클래스 템플릿)