Подтвердить что ты не робот

Получение ошибки: "shared_ptr" в пространстве имен "std" не называет тип

Я пытаюсь скомпилировать приложение для Android в android studio (ndk r10d), которое использует некоторый код на С++. Мне нужен С++ 11, поэтому я добавил -std=gnu++11 (мне нужно gnu++11 вместо c++11 для расширения, которое я использую). Я использую stlport stl, из-за использования других библиотек, которые используют эту библиотеку stl. Поэтому мои параметры cFlags и stl в файле build.gradle выглядят следующим образом:

stl "stlport_static"
cFlags " mylib1.a mylib2.a ... -fexceptions -frtti -std=gnu++11"

Я также включил память: #include <memory>

При попытке компиляции я получаю эту ошибку:

'shared_ptr' in namespace 'std' does not name a type

Я использую ускорение для интеллектуальных указателей до сих пор, но с переходом на С++ 11 я предпочел бы использовать стандартную реализацию.

4b9b3361

Ответ 1

@T.C Похоже, вы были правы. Я видел ваши претензии по другому вопросу, ища решение для своей проблемы, но поскольку библиотеки, которые я использую, компилируются с С++ 11 и STLport, я думал, что это утверждение может быть неверным.

Что я думаю, так это то, что библиотеки, которые я использую, не используют никаких функций С++ 11, которые отсутствуют в STLport. Они используют только функции С++ 11, которые поддерживает gcc-компилятор. Мне нужен gnuStl для поддержки функций, которые я использую.

Мое решение состояло в том, чтобы использовать реализацию boost для интеллектуальных указателей и всех других отсутствующих функций С++ 11.