你能否告诉我这是否适用于VS2015?
shared_ptr< char> buffer( make_shared< array< char,10>>() , [] (char *p){delete[] p; } );
或
shared_ptr< char> buffer( make_shared< array< int,10>>() ,default_delete< int[]>());
答案 0 :(得分:0)
Visual Studio 2015不支持C ++ 17标准。在C ++ 17标准之前,您不能拥有std::shared_ptr<T[]>
指针。但即使在C ++ 17中,std::make_shared函数也不支持数组类型,因此您必须使用boost::make_shared。另一种方法是将唯一指针与支持数组类型的std::make_unique结合使用。如史考迈尔斯在他的“有效性”中指出的那样,这可能不是一个好主意
现代C ++“书:
数组的std :: unique_ptr的存在应该是唯一的 对你有兴趣,因为std :: array,std :: vector和 std :: string几乎总是比数据结构选择更好 原始数组。