Почему нет специализации std :: shared_ptr <T []>?
Стандарт предусматривает шаблон специализацииstd::unique_ptr
который правильно называетdelete[]
от его деструктора:
void func()
{
std::unique_ptr< int[] > arr(new int[10]);
.......
}
С участиемstd::shared_ptr
эта специализация недоступна, поэтому необходимо предоставить средство удаления, которое правильно вызываетdelete[]
:
void func()
{
// Usage
shared_ptr array (new double [256], [](double* arr) { delete [] arr; } );
..............
}
Это просто недосмотр? (так же, как естьstd::copy_if
) или есть причина?