如果有class T{ void M() };
,我想要一个可以使用T::M
作为模板参数的模板类。说这样的话:
T t;
TUser<T::M> user(t);
有可能吗?
答案 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 );