0

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

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

例如,

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

然后,FunClass 可以根据 MyClass 的要求,由各种函数指针、不同参数个数的成员函数指针转换而来。有什么简单的转换方法吗?谢谢。

4

1 回答 1

1

按照评论中的讨论:您可以ConvertToFunClass这样提取:(从这里窃取)

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。)

于 2013-01-01T14:42:55.410 回答