cpp当中的make_shared函数不能用初始化列表做参数吗?为什么?

查了一下vector是有以初始化列表为参数的构造函数的,下面语句正确的:

vector<string> v({"str1","str2"});

但当我以初始化列表为make_shared参数的时候报错了,下面语句是错误的:


auto ptr=make_shared<vector<string>>({"str1","str2"});

初学者,请问是我对make_shared的理解错了吗?

make_shared创建vector时比较特殊 ,因为模板的模板对于 make shared 太复杂了 需要用到 std::initializer_list

initializer_list<string> initlist = {"str1", "str2"};
make_shared<vectot<string>> (initlist);

你可以看看这个
https://www.zhihu.com/question/492029713/answer/2167610442?utm_id=0?


如果有用麻烦给个采纳,谢谢~