>  기사  >  백엔드 개발  >  C에는 왜 std::shared_ptr 전문화가 없나요?

C에는 왜 std::shared_ptr 전문화가 없나요?

DDD
DDD원래의
2024-11-10 06:48:03963검색

Why Isn't There a std::shared_ptr Specialization in C  ?

std::shared_ptr 특수화

C 표준 라이브러리에는 소멸자에서 delete[]를 올바르게 호출하는 배열에 대한 std::unique_ptr의 특수화가 포함되어 있습니다. 그러나 std::shared_ptr에는 비슷한 전문화가 없습니다. 이 동작을 수행하려면 사용자가 명시적으로 delete[]를 호출하는 삭제기를 수동으로 제공해야 합니다.

이 누락은 실수인가요, 아니면 의도적인가요?

부재 이유

C 라이브러리 워킹 그룹(LWG)은 다음과 같은 가능성을 고려했습니다. std::shared_ptr 전문화되었지만 추가 기능을 둘러싼 논란으로 인해 포함되지 않았습니다.

구체적으로 std::shared_ptr 제안했지만 반대에 부딪혔다. 궁극적으로 공식적인 제안과 우선순위가 부족하여 해당 기능이 표준에서 제외되었습니다.

최근 개발

비공식적으로 이 주제는 다시 한 번 업계 내에서 관심을 끌었습니다. LWG 및 프로토타입이 개발되었습니다. 이 기능이 귀중한 도구가 될 가능성이 있지만 표준에 포함될지는 여전히 불확실합니다.

현재 상태

C 11 기준으로 std:: shared_ptr 전문성이 표준화되지 않았습니다. 그러나 std::shared_ptr에 대한 배열 지원을 도입하는 TS 제안 초안(N4077)이 진행 중입니다.

업데이트(2017)

C 17 표준에는 지원이 포함됩니다. std::shared_ptr 배열의 경우(케이스 3 shared_ptr::shared_ptr()).

위 내용은 C에는 왜 std::shared_ptr 전문화가 없나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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