Взято с: http://herbsutter.com/2013/05/22/gotw-5-solution-overriding-virtual-functions/
Почему мы должны писать:
auto pb = unique_ptr<base>{ make_unique<derived>() };
Вместо просто:
auto pb = make_unique<derived>();
Мое единственное предположение состоит в том, что если мы хотим auto
, нам нужно помочь ему вывести правильный тип (здесь base
).
Если это так, то для меня это было бы действительно сомнительной заслугой.. набрать auto
, а затем набрать много инициализации справа от =
..
Что мне не хватает?
decltype(pb)
) - person R. Martinho Fernandes   schedule 27.05.2013unique_ptr<base> pb = make_unique<derived>();
проще? То, чтоauto
существует, не означает, что мы должны его использовать. - person FredericS   schedule 27.05.2013auto pb = unique_ptr<base>(new derived());
для ясности. - person Sander De Dycker   schedule 27.05.2013{}
- person emesx   schedule 27.05.2013