The following reply was made to PR lib/49989; it has been noted by GNATS.
From: Joerg Sonnenberger <joerg%britannica.bec.de@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: lib/49989: libc++ fails to build with g++ 5.1 due to libpthread
volatiles
Date: Tue, 23 Jun 2015 12:33:51 +0200
On Sat, Jun 20, 2015 at 03:05:00PM +0000, pooka%iki.fi@localhost wrote:
> === snip ===
> libc++/dist/libcxx/include/__mutex_base:32:69: error: temporary of non-literal type '__pthread_mutex_st' in a constant expression
> constexpr mutex() _NOEXCEPT : __m_(PTHREAD_MUTEX_INITIALIZER) {}
> [...]
> include/pthread_types.h:101:8: note: '__pthread_mutex_st' is not literal because:
> struct __pthread_mutex_st {
> ^
> include/pthread_types.h:103:17: note: non-static data member '__pthread_mutex_st::ptm_errorcheck' has volatile type
> pthread_spin_t ptm_errorcheck;
This is likely an interaction of GCC not believing this to be a system
hader and a bug in the C++11 specs when it comes to volatile in nested
elements.