Namespaces
Variants

std:: move_constructible

From cppreference.net
헤더에 정의됨 <concepts>
template < class T >
concept move_constructible = std:: constructible_from < T, T > && std:: convertible_to < T, T > ;
(C++20부터)

move_constructible 개념은 T 가 참조 타입이거나, 해당 타입의 rvalue로부터 직접 초기화 및 복사 초기화 컨텍스트 모두에서 일반적인 의미론으로 객체를 생성할 수 있는 객체 타입일 때 충족됩니다.

의미론적 요구사항

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

  • rv , 타입 T 의 rvalue, 그리고
  • u2 , rv 와 동일한 타입 T 의 별개 객체,

다음은 참입니다:

  • 정의 T u = rv ; 이후, u u2 와 동일하다;
  • T(rv) u2 와 동일하다; 그리고
  • 만약 T 가 const-qualified가 아니라면, rv 의 결과 상태(위 두 가지 경우 중 어느 하나에서 정의/표현식 평가 이후)는 유효하지만 지정되지 않는다; 그렇지 않으면 변경되지 않는다.

참조문헌

  • C++23 표준 (ISO/IEC 14882:2024):
  • 18.4.13 개념 move_constructible [concept.moveconstructible]
  • C++20 표준(ISO/IEC 14882:2020):
  • 18.4.13 개념 move_constructible [concept.moveconstructible]

참고 항목

타입이 우측값 참조로부터 생성될 수 있는지 확인합니다
(클래스 템플릿)