| Re: How to convert a pointer to member function type to a const member one |
|
 |
|
 |
|
 |
|
 |
Group: comp.lang.c++.moderated · Group Profile
Author: smolenskysmolensky Date: Apr 30, 2008 20:19
On Apr 30, 12:38 pm, mcostalba gmail.com> wrote:
> Hi all,
>
> I have a problem.
>
> What is the best way to get a type TC from a type T where
>
> T is int(foo::*)(char)
>
> and
>
> TC is int(foo::*)(char) const
>
> I have tried
>
> typdef T const TC
>
> but with no success.
>
You can use reinterpret_cast or C-style cast, if this is what you are
really want. There is no automatic or const conversion from one to
another. T is a (non-const) pointer to non-const member function, TC
is a (non-const) pointer to const member function.
The reason is when member functions are translated, they are passed
this pointer as a first argument as if they had signatures:
f( foo* this, char ) and
f( foo const* this, char )
T is a pointer to function receiving foo* and TC is a pointer to
function receiving foo const*.
If you had const and non-const pointers to the same type:
typedef int(foo::* U)(char); // non-const pointer to member
typedef U const UC; // const pointer to member
U mf;
UC cmf = &U::f;
mf = cmf;
it would work.
-Michael
|