Хотя в моем компиляторе есть std::tr1::shared_ptr<T>
, у меня нет make_shared
.
Может ли кто-нибудь указать мне на правильную реализацию make_shared
? Я вижу, что мне нужно использовать varargs для предоставления аргументов конструктору T.
Но в моем компиляторе также нет вариативных шаблонов.
make_shared
, одна для нулевых аргументов, одна для одного аргумента, одна для двух аргументов и т. д. - person Ben Voigt   schedule 04.02.2012make_shared
менее мощным в C++03, но вы все равно можете иметь оптимизацию реализации с одним выделением памяти, а также безопасность исключений, которую обеспечивает фабричная функция. - person Kerrek SB   schedule 04.02.2012T const&
противT&
. - person R. Martinho Fernandes   schedule 04.02.2012T
можно явно указать какconst something
, но не получится ли сделать такой вывод? Да, это выглядит так: ideone.com/c3VF8 - person Ben Voigt   schedule 04.02.2012T&
не выведетfoo const&
, толькоfoo&
. Вот почему Керрек упоминает ссылки на rvalue:T&&
может вывести какfoo&
, так иfoo&&
. - person R. Martinho Fernandes   schedule 04.02.2012