C 컨테이너는 불완전한 유형의 인스턴스화를 금지하는 것으로 유명합니다. Boost의 컨테이너 라이브러리는 이러한 제한을 우회하여 그 목적과 잠재적인 단점에 대한 의문을 제기합니다.
제한의 근거
역사적으로 C 표준화 위원회는 불완전한 다양한 구현 동작을 발견했습니다. 다양한 STL 구현에 걸쳐 유형을 사용합니다. 호환성을 보장하고 혼란을 피하기 위해 표준 라이브러리 컨테이너에서 불완전한 유형을 명시적으로 금지했습니다.
불완전한 유형 허용의 잠재적인 단점
불완전한 유형을 허용하면 고급 데이터 구조가 가능할 수 있습니다. , 런타임 문제가 발생할 수도 있습니다. 불완전한 유형에는 필요한 정보가 부족하여 컨테이너가 메모리 할당 및 객체 수명을 관리하기 어렵습니다.
미래 가능성
C 위원회는 불완전한 유형 허용의 잠재적 이점을 인정했습니다. 유형. 2002년에 라이브러리 작업 그룹 의장은 C의 향후 버전에서는 이러한 제한이 완화될 수 있음을 암시했습니다. 그러나 현재 표준에서는 금지 사항이 그대로 유지됩니다.
Boost의 솔루션
Boost 개발자는 표준 접근 방식의 한계를 인식하여 다음이 가능한 자체 컨테이너를 만들었습니다. 불완전한 유형으로 작업합니다. 이를 통해 표준 라이브러리에서는 불가능했던 재귀적 데이터 구조 생성이 가능해졌습니다.
C 17 부분 허용
C 17은 특정 항목에 대해 이 제한을 부분적으로 완화했습니다. 컨테이너를 사용하면 컨테이너의 요소 유형이나 키 유형에서 전방으로 선언된 유형에 대해 불완전한 유형을 사용할 수 있습니다. 이러한 제한된 허용은 기존 구현과의 안정성을 유지하면서 일부 최신 프로그래밍 패턴과의 호환성을 향상시킵니다.
위 내용은 C 표준 컨테이너가 불완전한 유형을 사용할 수 없는 이유와 해결 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!