Ошибка: нет подходящего конструктора для инициализации 'std :: shared_ptr' - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь использовать std::shared_ptr <uint8_t []> в своем приложении NDK, но компилятор выдает ошибку ниже.

ошибка: нет подходящего конструктора для инициализации '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 Ответ

1 голос
/ 02 апреля 2019

В соответствии со страницей поддержки макроса функционального теста libc ++ , функция __cpp_lib_shared_ptr_arrays в настоящее время не реализована.

Она может иметь отношение к этой задаче незапущенный в соответствии с этой страницей .


Альтернативой может быть явное указание средства удаления массива:

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

(как видно издокументация здесь )

...