如何将模板参数中的函数或成员函数指针转换为函数类?假设一个函数类是一个定义成员函数operator()
的类。
我认为在模板中概括函数和成员函数的使用是有用的。
例如,
template<..., class FunClass>
class MyClass {};
然后,FunClass可以根据MyClass的要求从各种函数指针转换,成员函数指针具有不同数量的参数。有什么简单的方法可以进行转换吗?感谢。
答案 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。)