Есть ли недостатки с использованием make_shared<T>()
вместо использования shared_ptr<T>(new T)
.
Boost documentation утверждает
Повторялись запросы от пользователей для функции factory, которая создает объект определенного типа и возвращает shared_ptr к нему. Кроме удобство и стиль, такая функция также является безопасным исключением и значительно быстрее, потому что он может использовать единое распределение как для объект и соответствующий ему контроль блока, устраняя значительный часть конструкции shared_ptr накладные расходы. Это устраняет один из жалобы о большой эффективности shared_ptr.