无法使用GCC 5.1工具链编译C ++ 11源代码

时间:2015-06-15 20:51:42

标签: c++ c++11 gcc5

我试图在Ubuntu上使用GCC 5.1编译用C ++ 11特性编写的库。但是,抱怨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

我做错了什么?

1 个答案:

答案 0 :(得分:22)

你没有做错任何事。图书馆的来源缺少#include <memory>

这只是图书馆作者的一个不幸错误。对于to rely on certain standard headers just so happening to include other standard headers on their particular implementation人来说,这是非常普遍的,而不会检查他们是否正在使用他们应该使用的所有#include语句。

你现在可以破解#include,但从长远来看,如果项目接受补丁,你应该提出库作者的错误,甚至可能会提供补丁。