Si te encuentras con algún detalle que no comprendes puedes dejarlo en los comentarios y haremos todo lo necesario de ayudarte tan rápido como podamos.
Solución:
Tienes razón en que se eliminó el motivo principal. Todavía quedan los no use nuevo directrices y que es menos escribir razones (no tiene que repetir el tipo o utilizar la palabra new
). Es cierto que esos no son argumentos sólidos, pero realmente me gusta no ver new
en mi código.
Tampoco te olvides de la consistencia. Absolutamente deberías estar usando make_shared
entonces usando make_unique
es natural y se ajusta al patrón. Entonces es trivial cambiar std::make_unique
para std::make_shared
(o al revés) donde la sintaxis A requiere mucho más de una reescritura.
make_unique
distingue T
desde T[]
y T[N]
, unique_ptr(new ...)
no.
Puede obtener fácilmente un comportamiento indefinido pasando un puntero que fue new[]
ed a un unique_ptr
o pasando un puntero que fue new
ed a un unique_ptr
.
La razón es tener un código más corto sin duplicados. Comparar
f(std::unique_ptr(new MyClass(param)), g());
f(std::make_unique(param), g());
Ahorras MyClass
, new
y aparatos ortopédicos Sólo cuesta un carácter más en hacer en comparación con ptr.
Ten en cuenta difundir esta sección si te valió la pena.