views:

54

answers:

1

I know it's possible to separate to create a pointer to member function like this

struct K { void func() {} };
typedef void FuncType();
typedef FuncType K::* MemFuncType;
MemFuncType pF = &K::func;

Is there similar way to construct a pointer to a const function? I've tried adding const in various places with no success. I've played around with gcc some and if you do template deduction on something like

template <typename Sig, typename Klass>
void deduce(Sig Klass::*);

It will show Sig with as a function signature with const just tacked on the end. If to do this in code it will complain that you can't have qualifiers on a function type. Seems like it should be possible somehow because the deduction works.

+2  A: 

You want this:

typedef void (K::*MemFuncType)() const;

If you want to still base MemFuncType on FuncType, you need to change FuncType:

typedef void FuncType() const;
typedef FuncType K::* MemFuncType;
R Samuel Klatchko
Yes you are right it works! I thought I tried this second one, but guess not, that was another machine though maybe old compiler. Will have to check again tomorrow.
oldcig