Boost logo

Boost :

From: Daniel Frey (d.frey_at_[hidden])
Date: 2003-02-04 18:34:58

On Tue, 04 Feb 2003 23:10:39 +0100, Paul Mensonides wrote:

> Daniel Frey wrote:
>>> Yes, I worded that incorrectly. I should have said: are you thinking
>>> that the above will match
>>> int (X::*pf)(long, double) const;
>> I'm not absolutely sure, but I think that this creates a non-const
>> pointer to a const member function. As far as I understand it, this is
>> equivalent to:
>> typedef int ft( long, double ) const; ft X::* pf;
> Yes, the type of 'pf' is:
> int (X::*)(long, double) const;
>> To create something that matches to above specialization, you have to
>> do something like this:
>> ft X::* const cpf;
> I might be misunderstanding you, but the above does not match the type
> "int (X::*)(long, double) const." E.g. if I have this template:

I think you misunderstood me. I should have made it clearer what I was
refering to when I wrote "matches the above specialization". By this I
was refering to Peters question to find something that is taken by the

template< class C, typename T >
struct is_member_function_pointer< T C::* const >
{ enum { value = is_function< T >::value }; };

specialization I provided. At least that is how I understood him.

> As I said, I may be misunderstanding you. If so, just consider it a
> clarification for everyone else. As is, the four specializations that
> you provided with catch any unqualified (first one) or qualified (other
> three) pointer-to-member. The nested call to 'is_function' should yield
> true if the pointed-to type a function type (cv-qualified or otherwise).

Yes. My problem is that I still don't understand what Peter is trying to
show and that makes me kind of nervous :)

Regards, Daniel

Boost list run by bdawes at, gregod at, cpdaniel at, john at