我们可以使用Member Function类型作为模板参数吗?

时间:2011-11-16 21:55:06

标签: c++ templates member-functions

如果有class T{ void M() };,我想要一个可以使用T::M作为模板参数的模板类。说这样的话:

T t;
TUser<T::M> user(t);

有可能吗?

1 个答案:

答案 0 :(得分:5)

是的,它可能:

template< typename T, void (T::*M)() >
struct something
{
    void somewhere( T* obj )
    {
        (obj->*M)();
    }
};

和它的使用方式如下:

T t;
something< T, &T::M > user;
user.somewhere( &t );