меня есть функция и она возвращает unique_ptr, но функция слишком общая и юзается много где и где то его результат должен идти как shared и передаваться в другое место.
А что смущает? Конструктор это позволяет: template< class Y, class Deleter > shared_ptr( std::unique_ptr<Y, Deleter>&& r );
главное делать это не ручками забирая указатель
на стековерфлоу ругаются просто. Be aware that while not allowed the compiler (at least not gcc) will actually not prevent (or even warn) if you accidentally (e.g. by changing the pointer type of a member variable) assign a std::unique_ptr to a std::shared_ptr.
https://stackoverflow.com/questions/37884728/does-c11-unique-ptr-and-shared-ptr-able-to-convert-to-each-others-type К этому std::shared_ptr<std::string> shared = std::make_unique<std::string>("test");
Тут просто предупреждают, что неявный каст unique в shared может не выкинуться в warning и ты его не увидишь при компиляции, но если ты знаешь, что ты намеренно делаешь из unique shared, то все норм.
Обсуждают сегодня