错误:没有匹配的构造函数,无法初始化'std :: shared_ptr <uint8_t [] =“”>'

时间:2019-04-02 08:25:53

标签: android android-ndk c++17

我试图在我的NDK应用程序中使用std::shared_ptr <uint8_t []>,但是编译器抛出以下错误。

  

错误:没有匹配的构造函数来初始化'std::shared_ptr<uint8_t []>'

std::shared_ptr<uint8_t[]> x_data(new uint8_t[bytes_to_send]);

我的NDK版本是r19c,CMake如下图

cmake {

           version "3.10.2"

          cppFlags "-std=c++17 -stdlib=libc++ -frtti -fexceptions"
...
}

1 个答案:

答案 0 :(得分:1)

根据libc ++ Feature Test Macro Support page__cpp_lib_shared_ptr_arrays功能当前未实现。

可能与this task尚未启动而引起的this page有关。


同时,替代方法可能是显式指定数组删除器:

std::shared_ptr<uint8_t> x_data(new uint8_t[bytes_to_send], std::default_delete<uint8_t[]>());

(如文档here所示)