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

Я пытаюсь скомпилировать приложение для android в Android studio (ndk r10d), которое использует некоторый код c++. Мне нужен был C++11, поэтому я добавил -std=gnu++11 (мне нужно gnu++11 вместо c++11 для расширения, которое я использую). Я использую stlport stl, из-за других библиотек, которые я использую, которые используют эту библиотеку stl. Итак, мои параметры cFlags и stl в сборке.файл 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

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

3 ответов


http://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared использовать файл в ваш код.

#include <iostream>
#include <memory>

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

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

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


я получил здесь гуглить за аналогичную ошибку, но ответ не сработал:

error: ‘shared_pointer’ in namespace ‘std’ does not name a template type

В моем случае, это была опечатка:

std::shared_pointer

должно быть

std::shared_ptr