La norme fournit une spécialisation de modèle de std::unique_ptr
qui appelle correctement le delete[]
de son destructeur:
void func()
{
std::unique_ptr< int[] > arr(new int[10]);
.......
}
Avec std::shared_ptr
cette spécialisation n'est pas disponible, il est donc nécessaire de fournir un suppresseur qui appelle correctement delete[]
:
void func()
{
// Usage
shared_ptr array (new double [256], [](double* arr) { delete [] arr; } );
..............
}
Est-ce simplement un oubli? (de la même manière qu'il y a std::copy_if
) ou y a-t-il une raison?