On 06/29/2017 09:56 AM, Joseph Myers wrote:
On Wed, 28 Jun 2017, Martin Sebor wrote:

The more limited interfaces could, of course, be __typeof_noqual in some
form.

Actually, despite what I've been arguing, I agree.  I've come
to realize that what makes me uneasy about it is its name: it
makes it sound like a special purpose flavor of __typeof__,
when it really is a general purpose __remove_qualifiers trait.
How does renaming it to something like that sound?

__typeof__ makes clear that it returns a type, whether given a type or an
expression.  Can __remove_qualifiers be applied to an expression, and, if
so, what does it do - return a type, or return the result of converting
the expression to the corresponding type with whatever qualifiers removed?

The C++ traits primitives
(https://gcc.gnu.org/onlinedocs/gcc/Type-Traits.html) work on types,
not expressions, so I would suggest to have __remove_qualifiers (and
the related __remove_const et al., if they should be added) follow
the same approach.

Martin

PS There are at least a couple of traits on the list above that
would be useful in C as well (__is_enum and __is_union, and maybe
also __underlying_type).

Reply via email to