Есть ли причина не использовать std :: make_shared при создании объектов?

Я не могу придумать ситуации, в которой

std::shared_ptr<Object> obj(new Object("foo", 1));

было бы предпочтительнее

auto obj = std::make_shared<Object>("foo", 1);

. Последнее всегда приводит к лучшей локальности и уменьшению фрагментации памяти. Есть ли ситуация, в которой вы бы предпочли (или были бы вынуждены) использовать первую форму, кроме взаимодействия с кодом, возвращающим необработанные указатели?

15
задан Alex B 12 January 2012 в 23:10
поделиться