Hi,

On 05/11/2012 06:41 AM, Jason Merrill wrote:
On 05/10/2012 05:31 PM, Paolo Carlini wrote:
Let's see if we can do something *now* ;) My concrete proposal would be:

TYPE_PTRMEM_P rename to TYPE_PTRDATAMEM_P (consistent with
TYPE_PTRMEMFUNC_P)
TYPE_PTR_TO_MEMBER_P rename to TYPE_PTRMEM_P

and then finally

#define TYPE_PTR_OR_PTRMEM_P(NODE) \
(TYPE_PTR_P (NODE) || TYPE_PTRMEM_P (NODE))

and use it everywhere. Sounds like an improvement?

Sounds pretty good. But I suspect a lot of places want to check TYPE_PTR_P || TYPE_PTRDATAMEM_P (because you can't just use TREE_TYPE to get the function type of a PMF), so this new macro doesn't help with your desire to avoid writing ||.
Well, I wanted to avoid writing it somewhere *else* ;) But, if we want, we could add a new predicate for your case too, maybe in a following step. What do you think?
Additionally, we could maybe rename PTRMEM_OK_P to PTRMEMFUNC_OK_P
No, that flag applies to both varieties of members.
I see. Then while we are at it we could probably tweak a bit a the comment, I find it a tad misleading:

/* Indicates when overload resolution may resolve to a pointer to
   member function. [expr.unary.op]/3 */

???

Thanks,
Paolo.

Reply via email to