>  기사  >  백엔드 개발  >  불완전한 유형으로 표준 컨테이너 템플릿을 인스턴스화할 수 있습니까?

불완전한 유형으로 표준 컨테이너 템플릿을 인스턴스화할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-04 14:59:40937검색

Can Standard Container Templates be Instantiated with Incomplete Types?

표준 컨테이너 템플릿 및 불완전한 유형

표준 컨테이너 템플릿을 불완전한 유형으로 인스턴스화할 수 있는지에 대한 의문이 생깁니다. 특정 컨테이너 구성이 실제로 작동하는 것처럼 보일 수 있지만 C 11 표준은 §17.6.4.8 [lib.res.on.functions]에서 이를 명시적으로 금지합니다.

표준에서는 다음과 같이 명시합니다. "... 불완전한 유형의 경우 (3.9)는 해당 구성 요소에 대해 특별히 허용되지 않는 한 템플릿 구성 요소를 인스턴스화할 때 템플릿 인수로 사용됩니다. 이 제한은 멤버 함수, 멤버 클래스 정의 및 서명에 적용되지만 블록 범위 내의 작업에는 적용되지 않습니다.

표준 라이브러리 구현은 특별히 필요한 다른 인스턴스화가 성공하더라도 불완전한 유형에 대해 실패하는 템플릿 인스턴스화를 유도할 수 없습니다. . 이러한 금지는 "작은 벡터"와 같은 최적화로 인해 발생하는 자체 참조 유형과 같은 잠재적인 문제를 방지하기 위한 것입니다.

불완전한 유형 인수를 명시적으로 지원하는 std::unique_ptr 클래스 템플릿과 같은 예외가 있습니다. 블록 범위 내에서도 마찬가지입니다. 그러나 표준 컨테이너의 경우 불완전한 유형 사용에 대한 제한이 그대로 유지되어 구현 전반에 걸쳐 일관된 동작이 보장됩니다.

위 내용은 불완전한 유형으로 표준 컨테이너 템플릿을 인스턴스화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.