首页 > 解决方案 > 是否允许将 unique_ptr 分配给 shared_ptr?

问题描述

std::map<std::string, std::shared_ptr<SomeClass>> map_string_to_object_pointer;


map_string_to_object_pointer["abcd"] = std::make_unique<SomeClass>();

问题是关于将 unique_ptr 分配给 shared_ptr。这是一个现有的代码,因此只是试图了解它是否是一个糟糕的编程或将唯一分配给 shared_ptr 隐式地将 unique_ptr 转换为共享?因此没有编译器警告。

标签: c++

解决方案


是的,这会调用相应的赋值运算符:

 template< class Y, class Deleter > 
 shared_ptr& operator=( std::unique_ptr<Y,Deleter>&& r );

推荐阅读