如何将模板参数中的函数或成员函数指针转换为函数类?

时间:2013-01-01 14:05:13

标签: c++ templates

如何将模板参数中的函数或成员函数指针转换为函数类?假设一个函数类是一个定义成员函数operator()的类。

我认为在模板中概括函数和成员函数的使用是有用的。

例如,

template<..., class FunClass>
class MyClass {};

然后,FunClass可以根据MyClass的要求从各种函数指针转换,成员函数指针具有不同数量的参数。有什么简单的方法可以进行转换吗?感谢。

1 个答案:

答案 0 :(得分:1)

根据评论中的讨论:您可以通过以下方式提取ConvertToFunClass :(从here被盗)

template<typename Sig>
struct Types;

template<typename RetType, typename ClassType, typename Arg0>
struct Types<RetType (ClassType::*)(Arg0)>
{
    typedef RetType return_type;
    typedef ClassType class_type;
    typedef Arg0 argument_0;
};

用法可以是MyClass<T, R, Types<decltype(&MyFun)>::ClassType > a;

(免责声明:我没有尝试代码,无法访问编译器ATM。)