On Wed, 28 Jun 2017, Martin Sebor wrote:

> > that defines "remove qualifiers except"
> > operations for every combination of qualifiers in that version of the
> > compiler (because "remove qualifiers except _Atomic" and "remove
> > qualifiers except address spaces" cannot be composed into "remove
> > qualifiers except _Atomic and address spaces, and "remove const, volatile,
> > restrict and address spaces" is not something user code should need to
> > hardcode when the intent is "remove qualifiers except _Atomic").
> 
> I'm not sure I understand what you're trying to say.  I thought
> we agreed earlier that __typeof_noqual__ would remove all type
> qualifiers.

Yes, it should.

What I'm saying is: if you provide an interface that enables users to 
write code that means "remove const" and will continue to mean exactly 
that with future GCC versions, even when those versions have additional 
qualifiers, you should also provide an interface that enables users to 
write code that means "remove all qualifiers except _Atomic and address 
spaces" (and likewise for any other combination) and will continue to mean 
exactly that with future GCC versions, even when those versions have 
additional qualifiers.  Allowing users to write "remove const, volatile 
and restrict" is *not* the same, as the meanings would diverge when future 
qualifiers are added.

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to