Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't compile C++11 source using GCC 5.1 toolchain

Tags:

c++

c++11

gcc5

I'm trying to compile a library written with C++11 features using GCC 5.1 on Ubuntu. However, it complains std::unique_ptr is not defined.

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 flags:

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

Output:

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

However, I'm able to compile the exact same code on OSX.

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

CXX flags:

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

What am I doing wrong?

like image 399
Thijs Avatar asked Jun 15 '15 20:06

Thijs


1 Answers

You're not doing anything wrong. The library's source is missing an #include <memory>.

This is simply an unfortunate error by the author of the library. It's surprisingly commonplace for people to rely on certain standard headers just so happening to include other standard headers on their particular implementation, without checking that they're using all the #include statements that they should.

You could hack the #include in for now but, long term, you should raise a bug with the library author and maybe even contribute a patch, if the project accepts patches.

like image 166
Lightness Races in Orbit Avatar answered Oct 04 '22 06:10

Lightness Races in Orbit