Programing

std :: shared_ptr이없는 이유

lottogame 2020. 11. 22. 18:48
반응형

std :: shared_ptr이없는 이유 전문화?


표준은 소멸자에서 std::unique_ptr를 올바르게 호출 하는 템플릿 전문화를 제공합니다 delete[].

void func()
{
   std::unique_ptr< int[] > arr(new int[10]);

   .......
}

함께 std::shared_ptr이 전문을 사용할 수없는, 그래서 제대로 호출하는 Deleter가를 제공 할 필요가있다 delete[]:

void func()
{
    // Usage
    shared_ptr array (new double [256], [](double* arr) { delete [] arr; } ); 

    ..............
}

이것은 단순히 감독입니까? (있는 것과 같은 방식으로 std::copy_if) 또는 이유가 있습니까?


LWG (C ++위원회의 도서관 워킹 그룹)는 가능성을 잠깐 고려했지만 논란이없는 아이디어는 아니 었습니다. 논란은 주로 shared_ptr<T[]>제안에 추가 된 기능에 대한 것이었지만 폐기 될 수 있는 기능 (에서 산술 shared_ptr<T[]>)이었습니다.

그러나 궁극적으로 진짜 진짜 이유는 논의되었지만 LWG 앞에서이를 수행하기위한 실제 서면 제안이 없었기 때문입니다. 제안서를 작성하는 데 시간을 할애 할만큼 누구의 우선 순위 목록 (내 자신 포함)도 충분히 표시하지 않았습니다.

최근 몇 명의 LWG 회원들 사이에서이 주제에 대한 비공식적 인 대화가 새로 시작되었으며 저는 개인적으로 프로토 타입을 만들었습니다. 그러나 그것에 대한 서면 제안은 아직 없습니다. 도구 상자에서 괜찮은 추가 도구가 될 것이라고 생각합니다. 그것이 실제로 일어날 것인지 아닌지는 누구의 추측입니다.

최신 정보

shared_ptr현재 어레이 지원 에는 TS 초안이 있습니다.

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4077.html

업데이트 (2017)

이제 C ++ 17에서 지원됩니다. 사례 3 참조shared_ptr::shared_ptr()

참고 URL : https://stackoverflow.com/questions/8947579/why-isnt-there-a-stdshared-ptrt-specialisation

반응형