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?因此,没有编译器警告。
答案 0 :(得分:1)
是的,这将调用相应的赋值运算符:
template< class Y, class Deleter >
shared_ptr& operator=( std::unique_ptr<Y,Deleter>&& r );
答案 1 :(得分:-1)
constructor和assignment都存在重载(即使std::auto_ptr
被接受为0_o。)
确实只有一种不好的编程习惯:做某事而实际上不知道自己在做什么。其他一切都可以接受。