История изменений
Исправление bugfixer, (текущая версия) :
Согласен. На самом деле то что другой товарищ выше назвал «паттерном» на полновесный паттерн не тянет, но это довольно широко известная «passkey idiom». Нужно не только для make_shared() / make_unique() - при любом in-place construction (читаем - container::emplace() в вариациях) - стандартное решение.
А по поводу make_unique() - если отбросить синтаксический сахар (чтобы типы явно каждый раз не выписывать и делать auto ptr = make_unique…
) единственное реальное применение это exception safety: вот так foo(unique_ptr<A>(new A), unique_ptr<B>(new B));
может течь, а с make_unique() - уже не может. Мои 2 копейки.
Исправление bugfixer, :
Согласен. На самом деле то что другой товарищ выше назвал «паттерном» на полновесный паттерн не тянет, но это довольно широко известная «passkey idiom». Нужно не только для make_shared() / make_unique() - при любом in-place construction (читаем - container::emplace() в вариациях) - стандартное решение.
А по-поводу make_unique() - если отбросить синтаксический сахар (чтобы типы явно каждый раз не выписывать и делать auto ptr = make_unique…
) единственное реальное применение это exception safety: вот так foo(unique_ptr<A>(new A), unique_ptr<B>(new B));
может течь, а с make_unique() - уже не может. Мои 2 копейки.
Исправление bugfixer, :
Согласен. На самом деле то что другой товарищ выше назвал «паттерном» на полновесный паттерн не тянет, но это довольно широко известная «passkey idiom». Нужно не только для make_shared() / make_unique() - при любом in-place construction (читаем - container::emplace()) - стандартное решение.
А по-поводу make_unique() - если отбросить синтаксический сахар (чтобы типы явно каждый раз не выписывать и делать auto ptr = make_unique…
) единственное реальное применение это exception safety: вот так foo(unique_ptr<A>(new A), unique_ptr<B>(new B));
может течь, а с make_unique() - уже не может. Мои 2 копейки.
Исправление bugfixer, :
Согласен. На самом деле то что другой товарищ выше назвал «паттерном» на полновесный паттерн не тянет, но это довольно широко известная «passkey idiom». Нужно не только для make_shared() / make_unique() - при любом in-place construction (читаем - container::emplace()) - стандартное решение.
А по-поводу make_unique() - если отбросить синтаксический сахар (чтобы типы явно каждый раз не выписывать и делать «auto ptr = make_unique…») единственное реальное применение это exception safety: вот так foo(unique_ptr<A>(new A), unique_ptr<B>(new B));
может течь, а с make_unique() - уже не может. Мои 2 копейки.
Исходная версия bugfixer, :
Согласен. На самом деле то что другой товарищ выше назвал «паттерном» на полновесный паттерн не тянет, но это довольно широко известная «passkey idiom». Нужно не только для make_shared() / make_unique() - при любом in-place construction (читаем - container::emplace()) - стандартное решение.
А по-поводу make_unique() - если отбросить синтаксический сахар (чтобы типы явно каждый раз не выписывать и делать «auto ptr = make_unique…» единственное реальное применение это exception safety: вот так foo(unique_ptr<A>(new A), unique_ptr<B>(new B));
может течь, а с make_unique() - уже не может. Мои 2 копейки.