Это использование безопасно, в том случае, если для shared_ptr<>
, переданного через ссылку, будет уменьшен счет (если предполагается, что shared_ptr<>
, возвращаемый из seeker->second->Copy()
, не является shared_ptr<>
для того же объекта), и поэтому объект, на который он будет указывать, может быть удален.
В частности, вы не создаете второй shared_ptr<>
из необработанного указателя (что является ошибкой, потому что это приведет к созданию второго, не связанного shared_ptr<>
с отдельным счетом и, следовательно, второго владельца объекта).
Будет ли ваша функция работать так, как вы хотите, зависит от того, что вы хотите.