Re: How to convert a pointer to member function type to a const member one
  Home FAQ Contact Sign in
comp.lang.c++.moderated only
 
Advanced search
POPULAR GROUPS

more...

 Up
Re: How to convert a pointer to member function type to a const member one         

Group: comp.lang.c++.moderated · Group Profile
Author: smolensky
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

--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]
no comments
diggit! del.icio.us! reddit!

RELATED THREADS
SubjectArticles qty Group
Re: To convert or not to convert, that's the questioncomp.lang.clipper.visual-objects ·