如何将模板参数中的函数或成员函数指针转换为函数类?假设函数类是定义成员函数的类operator()
。
我认为概括模板中函数和成员函数的使用很有用。
例如,
template<..., class FunClass>
class MyClass {};
然后,FunClass 可以根据 MyClass 的要求,由各种函数指针、不同参数个数的成员函数指针转换而来。有什么简单的转换方法吗?谢谢。
按照评论中的讨论:您可以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。)