代码之家  ›  专栏  ›  技术社区  ›  ahlougha shad

使用make_shared with char[]或int[][closed]

  •  -6
  • ahlougha shad  · 技术社区  · 7 年前

    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[]>());
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Ron Alan    7 年前

    Visual Studio 2015不支持C++17标准。在C++17标准之前,您不能使用 std::shared_ptr<T[]> 指针。但即使在C++17中 std::make_shared 函数不支持数组类型,因此必须使用 boost::make_shared std::make_unique 它支持数组类型。正如Scot Meyers在他的《有效

    阵列的std::unique\u ptr的存在应仅为 您对智力感兴趣,因为std::数组、std::向量和 字符串实际上总是比