> Le 22 juin 2016 à 21:41, Rich Felker a écrit : > > On Wed, Jun 22, 2016 at 09:38:17PM +0200, Julien Ramseier wrote: >> Hi Zhao, >> >> Not sure how you did build llvm-libcxx, but the only issue I encountered myself is >> the use of PTHREAD_MUTEX_INITIALIZER in libcxx include/__mutex_base. >> musl uses volatile types in its pthread_mutex_t struct and C++11 does not allow them >> with constexpr member initializers. This rule has been relaxed in C++14. > > Note that the code using them is still formally/conceptually buggy. > POSIX does not permit using these initializers as values. They can > only be used as initializers for objects with static storage duration. > A "mutex value" makes no sense; mutexes are objects not values. Actually the latest POSIX spec allows it. See http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutex_init.html A workaround for the C++11 constexpr issue should land soon in libcxx trunk. http://reviews.llvm.org/D21637 Julien