Стандарт предоставляет специализированную специализацию 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
) или есть причина?