C/C++ PATCH to add __typeof_noqual (PR c/65455, c/39985)

Martin Sebor msebor@gmail.com
Thu Jun 29 16:35:00 GMT 2017


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).



More information about the Gcc-patches mailing list