Boost logo

Boost :

Subject: Re: [boost] Libc++ failures on linux
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2017-03-10 23:22:52

On Sat, Mar 11, 2017 at 1:33 AM, Tom Kent via Boost
<boost_at_[hidden]> wrote:
> So I tried to add my first linux regression runner using libc++ with clang,
> and I'm seeing the following error saying it can't find <cstddef>:

That page currently shows a different error:

/usr/include/c++/v1/string:1938:44: error: 'basic_string<_CharT,
_Traits, _Allocator>' is missing exception specification 'noexcept'
basic_string<_CharT, _Traits, _Allocator>::basic_string(const
allocator_type& __a)
/usr/include/c++/v1/string:1326:40: note: previous declaration is here
    _LIBCPP_INLINE_VISIBILITY explicit basic_string(const allocator_type& __a)

This happens after boost/config.hpp is included, which means that
cstddef is found. Indeed, cstddef is in /usr/include/c++/v1 on my
system, so the compiler clearly looks there.

The error itself looks like a bug in libc++.

/usr/include/c++/v1/cxxabi.h:21:10: fatal error: '__cxxabi_config.h'
file not found
#include <__cxxabi_config.h>

This error is more interesting. I can see this #include in my local
libc++ as well, yet I can't find this file on my system.

Both errors indicate that libc++ is broken on Ubuntu (or Linux in
general) - either in upstream or in packaging. If that's the case, we
can probably stop this testing effort right here and report the bugs
to libc++ devs.

PS: If you're still having problems with cstddef, you can try seeing
if the compiler looks in /usr/include/c++/v1 as described here:

If it doesn't, try adding it as an include path. Although, that path
obviously should be used by default when libc++ is enabled.

Boost list run by bdawes at, gregod at, cpdaniel at, john at