punteros inteligentes y matrices

¿Cómo manejan los punteros inteligentes las matrices? Por ejemplo,

void function(void) { std::unique_ptr my_array(new int[5]); } 

Cuando my_array sale del scope y se destruye, ¿se vuelve a reclamar todo el conjunto entero? ¿Solo se reclama el primer elemento de la matriz? ¿O hay algo más en juego (como un comportamiento indefinido)?

Llamará delete[] y, por lo tanto, se recuperará toda la matriz, pero creo que debe indicar que está utilizando una matriz de unique_ptr de la unique_ptr :

 std::unique_ptr my_array(new int[5]); 

Esto se denomina Especialización Parcial de unique_ptr .

Editar: Esta respuesta fue incorrecta, como se explica en los comentarios a continuación. Esto es lo que dije originalmente:

No creo que std :: unique_ptr sepa llamar delete []. Efectivamente tiene un int * como miembro: cuando elimina un int * va a eliminar todo el conjunto, por lo que en este caso está bien.

El único propósito de la eliminación [] en oposición a una eliminación normal es que llama a los destructores de cada elemento en la matriz. Para los tipos primitivos no importa.

Lo dejo aquí porque aprendí algo, espero que los demás también lo hagan.