Нет, это вызовет деструкторы.Деструкторы уменьшают счетчик ссылок для каждого умного указателя, если он приводит к 0
, то деструктор вызывает свободную функцию (по умолчанию это - обертка удаления).Так что если вы сделали что-то вроде:
std::vector<std::shared_ptr<AbstractPathContainer>> mGeneratedPaths ({c1, std::shared_ptr<AbstractPathContainer>(new AbstractPathContainerImpl()) });
std::shared_ptr<AbstractPathContainer> smartRef = mGeneratedPaths[0];
mGeneratedPaths.clear();
smartRef
не будут удалены из кучи.