gcc-4.7-20111022 fails to build on PA-RISC
Sun Oct 30 19:23:00 GMT 2011
2011/10/30 Jonathan Wakely <email@example.com>:
> Unfortunately in the real case the initializer is an opaque macro,
> PTHREAD_MUTEX_INITIALIZER, which could be something unsuitable for
> that syntax, such as an integer constant.
> The only reliable way to use that macro is:
> pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
> which requires copy-init.
Here I'm having a logic problem: Obviously the above syntax
is supposed to be well-formed (Let's ignore for the moment
what the macro does). Given that fact, I would argue that
it should also be well-formed as part of any brace-or-equal-initializer
or a non-static data member. Am I missing something here?
What I'm trying to say here is, that if the volatile-member-
and-copy-initialization-semantics reason would be correct,
no-one could portably use
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
in block scope or namespace scope without creating ill-formed
code. There must be something obvious that I'm failing to see...
Assuming this is indeed a compiler defect in regard to
member initializers I would use your suggestion as a
More information about the Libstdc++