Namespaces
Variants

C++ named requirements: TriviallyCopyable (since C++11)

From cppreference.net
C++ named requirements

참고: 표준에서는 이 이름의 명명된 요구 사항을 정의하지 않습니다. 이는 핵심 언어에 의해 정의된 타입 범주입니다. 일관성을 위해서만 명명된 요구 사항으로 여기에 포함되었습니다.

목차

요구사항

다음 타입들을 총칭하여 trivially copyable types 라고 합니다:

참고 사항

일반적으로, 모든 trivially copyable 타입 T T 의 객체 obj1 에 대해, obj1 의 기본 바이트들은 char 배열이나 unsigned char , 또는 std::byte (since C++17) 배열로 복사되거나, T 의 별개 객체인 obj2 로 복사될 수 있습니다. obj1 obj2 모두 potentially-overlapping subobject일 수 없습니다.

obj1 의 기본 바이트를 그러한 배열에 복사한 다음, 그 결과 내용을 다시 obj1 으로 복사하면, obj1 은 원래 값을 유지할 것입니다. obj1 의 기본 바이트를 obj2 로 복사하면, obj2 obj1 의 값을 가지게 됩니다.

기본 바이트는 std::memcpy 또는 std::memmove 를 사용하여 복사할 수 있으며, 이는 활성 volatile 객체가 접근되지 않는 한 가능합니다.

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
CWG 1734 C++11 삭제된 비트리비얼 할당 연산자를 가진 C++03 POD는 trivial하지 않았음 삭제된 생성자/연산자 허용
CWG 2094 C++11 volatile 스칼라 타입은 trivially copyable하지 않았음 ( CWG 1746 ) trivially copyable로 변경

참고 항목

타입이 trivially copyable인지 확인합니다
(클래스 템플릿)