C ++ 20에서는 POD의 개념이 더 이상 사용되지 않습니다. 사소하고 표준적인 레이아웃이라는 의미없는 복합적인 특성이기 때문입니다.
잘못되었습니다. POD라는 용어는 더 이상 중요하지 않기 때문에 더 이상 사용 되지 않습니다 .
POD라는 용어는 더 이상 표준에서 목적을 제공하지 않으며 단지 정의되어 있으며 다른 유형이이 흔적 속성을 보존 할 때 제한이 적용됩니다.
본질적으로 사소한 레이아웃과 표준 레이아웃은 사소한 것이나 표준 레이아웃이 자체적으로 제공하는 것 이상의 능력을 얻지 못합니다. 이 두 가지의 조합은 유형을 특별하게 만들지 않으며 두 속성은 실제로 서로 관련이 없습니다.
표준 레이아웃은 비어 있지 않은 하위 객체의 레이아웃이 잘 정의되어있는 것입니다 (빈 레이아웃의 하위 기본 객체는 유형의 레이아웃을 방해하지 않습니다). 사소함은 객체가 저장하는 비트 블록 이외의 의미를 갖는지 여부와 임의의 비트 블록으로 초기화 된 경우 개념적으로 유효한 객체인지 여부에 관한 것입니다.
type을 사용하는 템플릿을 만들 때 해당 유형의 객체를 T
사용할 수 있는지 확인하려면 memcpy
멤버의 레이아웃에 신경 쓰지 않습니다. TriviallyCopyable인지 알고 싶습니다. 마찬가지로 offsetof
클래스에 사용자 제공 복사 생성자가있는 경우 정확성이 가장 중요하지 않습니다. 중요한 것은 멤버 하위 객체의 레이아웃이 명확한 표준 적용 순서로 발생하는지입니다.
기본적으로 사람들은 주변을 둘러 보았고 C ++ 에는 사소함과 표준 레이아웃 의 교차 가 필요한 것은 아무것도 없다는 것을 깨달았습니다 . 따라서 기간을 예약 할 필요가 없습니다. 표준에서 명시 적으로 일부 유형이 "POD"라고 명시한 소수의 장소는 적절하게 "사소한 표준 레이아웃"으로 간단히 대체 할 수 있습니다.
이 재귀 요구 사항이 중복입니까?
두 구성 요소 요구 사항은 개별적으로 재귀 적이므로 두 요소의 교집합도 재귀 적입니다. 따라서 모든 하위 오브젝트도 POD라고 명시 적으로 지정할 필요가 없습니다. 원래의 정의는 "정적이 아닌 모든 데이터 멤버는 POD 유형이어야합니다."와 같은 내용을 말하고 그대로 그대로 그대로 유지했습니다.