¿Por qué no hay una especialización std :: shared_ptr <T []>?
El estándar proporciona una especialización de plantilla destd::unique_ptr
que llama correctamente adelete[]
de su destructor:
void func()
{
std::unique_ptr< int[] > arr(new int[10]);
.......
}
Constd::shared_ptr
esta especialización no está disponible, por lo que es necesario proporcionar un eliminador que llame correctamente adelete[]
:
void func()
{
// Usage
shared_ptr array (new double [256], [](double* arr) { delete [] arr; } );
..............
}
¿Es esto simplemente un descuido? (de la misma manera que hay unastd::copy_if
) o hay alguna razón?