>  기사  >  백엔드 개발  >  `std::shared_ptr`에 배열 유형에 대한 전문화가 없는 이유는 무엇입니까?

`std::shared_ptr`에 배열 유형에 대한 전문화가 없는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-10 02:47:02352검색

Why Doesn't `std::shared_ptr` Have a Specialization for Array Types?

std::shared_ptr: Enigma의 전문화

C 표준 라이브러리에는 std에 대한 특수 템플릿이 포함되어 있습니다. :unique_ptr은 소멸자에서 delete[]를 적절하게 호출합니다. 그러나 std::shared_ptr에는 유사한 전문화가 없으므로 배열을 올바르게 할당 해제하려면 사용자 정의 삭제기를 사용해야 합니다.

전문성이 부족한 이유

처음에는 , std::shared_ptr 생략 전문화는 단순한 감독으로 보였다. 그러나 LWG(Library Working Group) 내에서는 이러한 기능 추가에 대한 합의가 없는 것으로 나타났습니다. 주된 우려는 폐기될 수 있는 기능인 shared_ptr에 산술 연산을 포함하라는 제안에서 비롯되었습니다.

결국 std::shared_ptr 전문화는 C 표준에서 생략된 결정적인 것으로 입증되었습니다. 최근 LWG 회원들 사이에서 논의가 재개되었지만 아직 공식적인 제안은 구체화되지 않았습니다.

현황

전문 템플릿이 없음에도 불구하고 C 17은 부분 배열 지원을 도입했습니다. shared_ptr::shared_ptr() 메서드의 세 번째 사례에 지정된 대로 shared_ptr의 경우. 이 업데이트를 사용하면 전용 전문화의 편리함이 없더라도 shared_ptr을 사용하여 배열을 생성하고 삭제할 수 있습니다.

향후 전망

초안 TS(기술 사양) N4077 shared_ptr에서 배열 지원을 향한 잠재적인 경로를 설명했으며 이 기능은 결국 C 17에 통합되었습니다. C의 지속적인 개발로 이 영역이 더욱 향상되어 공유 포인터를 사용한 배열 관리에 추가적인 유연성과 표현력을 제공할 수 있습니다.

위 내용은 `std::shared_ptr`에 배열 유형에 대한 전문화가 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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