Le 30 juin 2016 à 15:38, Rich Felker <dalias@libc.org> a écrit :

Could you cite the specific text you're looking at? The requirement of
static storage was removed by
http://austingroupbugs.net/view.php?id=70 but I see nothing allowing
the use of mutex values or assigning one to another, which as I
understand it is what the offending libc++ code is doing.

I'm not sure what you mean by "mutex value".
The libcxx mutex class only uses the PTHREAD_MUTEX_INITIALIZER
macro as an initializer for its underlying pthread_mutex member.

The part of the spec I was referring to is the use of
PTHREAD_MUTEX_INITIALIZER to initialize non-static mutexes,
which is what libcxx did and still do with my patch, but in a different
way to avoid the constexpr issue due to the nested volatile types.