>  기사  >  백엔드 개발  >  C 표준 라이브러리에 `std::shared_ptr`이 없는 이유는 무엇입니까?

C 표준 라이브러리에 `std::shared_ptr`이 없는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-10 04:07:53457검색

Why isn't there a `std::shared_ptr` in the C   standard library?

std::shared_ptr

C 표준 라이브러리에는 배열을 위한 std::unique_ptr의 특수 버전, std::unique_ptr는 소멸자에서 delete[]를 올바르게 호출합니다. 그러나 std::shared_ptr에는 이러한 전문화가 부족하므로 질문에 표시된 것과 같은 사용자 지정 삭제자를 사용해야 합니다.

전문성이 부족한 이유

std::shared_ptr가 없습니다.

  • LWG 토론: LWG(Library Working Group)는 이 아이디어를 고려했지만 shared_ptr<에 제안된 추가 기능을 둘러싼 논란으로 인해 결국 이를 기각했습니다. T[]>.
  • 공식 제안 부족: 비공식적 논의에도 불구하고 std::shared_ptr 생성을 위한 공식적인 제안은 LWG에 제출되지 않았습니다.

현재 상태 및 향후 전망

역사적인 망설임에도 불구하고 최근 논의가 LWG 회원들의 관심을 다시 불러일으켰습니다. 프로토타입이 구현되었지만 공식적인 제안은 여전히 ​​미해결 상태입니다. std::shared_ptr의 타당성과 궁극적인 채택 여전히 불확실합니다.

향후 개발

open-std.org TS(기술 사양) 초안에서는 std::shared_ptr에 대한 배열 지원을 제안합니다. 이 TS가 채택되면 std::shared_ptr C 표준의 일부입니다.

C 17용 업데이트

TS 초안은 이후 C 17에 통합되어 std::shared_ptr. 자세한 내용은 shared_ptr::shared_ptr()의 사례 3을 참조하세요.

위 내용은 C 표준 라이브러리에 `std::shared_ptr`이 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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