https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65455

--- Comment #5 from joseph at codesourcery dot com <joseph at codesourcery dot 
com> ---
stdatomic.h uses both __auto_type and __typeof__.  In the cases where 
__typeof__ is used, (a) const and _Atomic (and maybe volatile) must be 
removed and (b) __auto_type would not be correct (the type in question is 
not the type of the initializer, and if the types are different then the 
conversions from the type of the initializer to the type given with 
__typeof__ are required).

The dropping of qualifiers only when _Atomic was present was the 
conservative minimal change that could not affect any existing code using 
typeof.  It may well be that __typeof__ should always treat its argument 
as being an rvalue and so as having no qualifiers, but it wasn't necessary 
to resolve that issue at that time.

__auto_type and __typeof__ should be consistent with each other to avoid 
making the language even more confusing.

Reply via email to