Duplicar posibles:
make_unique and perfect forwarding¿Por qué C++ 11 tienen `` make_shared` pero no make_unique`
¿Por qué C++ 11 tienen una plantilla make_shared
, pero no una make_unique
plantilla?
Esto hace que el código sea muy inconsistente.
auto x = make_shared<string>("abc");
auto y = unique_ptr<string>(new string("abc"));
Probablemente porque 'unique' necesita construir un objeto y pensaron que era mejor hacerlo explícito –
No es el código que es inconsistente, es la biblioteca. –
El constructor de copia para unique_ptr es privado. Entonces make_unique no funciona sin "optimización del valor de retorno". Supongo que de acuerdo con la especificación del idioma, esta optimización no es obligatoria. – bop