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
'Programing' 카테고리의 다른 글
Visual Studio 2013에서 .less 파일에서 CSS 파일을 생성 할 수 있나요? (0) | 2020.11.22 |
---|---|
malloc은 Linux (및 기타 플랫폼)에서 할당을위한 백업 페이지를 느리게 생성합니까? (0) | 2020.11.22 |
graphite의 Carbon aggregator가 동일한 작업을 수행 할 수 있는데 왜 statsd를 사용합니까? (0) | 2020.11.22 |
AngularJS : REST 리소스에 매핑되는 객체 생성 (ORM 스타일) (0) | 2020.11.21 |
선택 태그의 자리 표시 자 (0) | 2020.11.21 |