Не могу скомпилировать исходный код C ++ 11 с помощью GCC 5.1 toolchain

Я пытаюсь скомпилировать библиотеку, написанную с функциями C ++ 11, используя GCC 5.1 на Ubuntu. Тем не менее, он жалуется std::unique_ptr не определено.

gcc (Ubuntu 5.1.0-0ubuntu11~14.04.1) 5.1.0
g++ (Ubuntu 5.1.0-0ubuntu11~14.04.1) 5.1.0

Флаги CXX:

-std=c++11 -Wall -Wextra -Weffc++ -pedantic

Выход:

error: ‘unique_ptr’ in namespace ‘std’ does not name a template type
std::unique_ptr< detail::RegexImpl > m_pimpl;

Тем не менее, я могу скомпилировать точно такой же код на OSX.

Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)

Флаги CXX:

-stdlib=libc++ -std=c++11 -Wall -Wextra -Weffc++ -pedantic

Что я делаю неправильно?

6

Решение

Вы не делаете ничего плохого. В источнике библиотеки отсутствует #include <memory>,

Это просто досадная ошибка автора библиотеки. Это удивительно обычное дело для людей полагаться на определенные стандартные заголовки просто так происходит включить другие стандартные заголовки в их конкретную реализацию, не проверяя, что они используют все #include заявления, которые они должны.

Вы могли бы взломать #include на данный момент, но в долгосрочной перспективе вы должны сообщить об ошибке автору библиотеки и, возможно, даже добавить патч, если проект принимает патчи.

16

Другие решения


По вопросам рекламы [email protected]