표준이 제대로 소멸자에서 delete[]
호출 std::unique_ptr
의 템플릿 특수화 제공 : std::shared_ptr
와std :: shared_ptr <T[]> 전문화가없는 이유는 무엇입니까?
void func()
{
std::unique_ptr<int[]> arr(new int[10]);
.......
}
는이 전문을 사용할 수 없습니다를, 그래서 제대로 delete[]
를 호출하는 Deleter가를 제공하기 위해 할 필요가 :
void func()
{
// Usage
shared_ptr array (new double [256], [](double* arr) { delete [] arr; });
..............
}
이것은 단순히 감독입니까? (같은 방식으로 std::copy_if
가 있습니다) 또는 이유가 있습니까?
N.B를 참조하십시오. Boost의 작업을 기반으로 C++ 17에 이것을 추가하는 새로운 제안이 있습니다 (http://open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3640.html –
). 하위 객체를 참조 할 수있는 능력과 같이 배열을 사용하여 작업 할 때는'shared_ptr' 기계류의 기능을 비활성화해야합니다. –