分配unique_ptr到shared_ptr是允许的吗?

时间:2018-08-16 10:40:17

标签: c++

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分配一个unique_ptr。这是一个现有的代码,因此只是试图了解它的编程是否错误或将shared_ptr分配为unique隐式地将unique_ptr转换为shared?因此,没有编译器警告。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:-1)

constructorassignment都存在重载(即使std::auto_ptr被接受为0_o。)

确实只有一种不好的编程习惯:做某事而实际上不知道自己在做什么。其他一切都可以接受。