嗨假设我有一个type typedef ReturnType(ObjectType :: * fun1)(Arg0);是否有可能通过对函数的一个引用来获取返回类型和参数的数量?
例如现在我有:
template <typename ObjectType, typename ReturnType, typename Arg0, typename Arg1 >
Private::value_fun< ObjectType, TYPELIST_2(Arg0, Arg1), ReturnType > val_mem_funcion(typename Private::value_fun<ObjectType, TYPELIST_2(Arg0, Arg1), ReturnType>::FunctionType func, Arg0 arg0, Arg1 arg1) {
return Private::value_fun <ObjectType, TYPELIST_2(Arg0, Arg1), ReturnType>( func, arg0, arg1 );
}
我的电话是:
std::for_each( test.begin(), test.end(), utils::val_mem_funcion<Test, int>(&Test::sum, 33, 44) );
但是如果我可以移除模板参数并使它像:
那样会好得多std::for_each( test.begin(), test.end(), utils::val_mem_funcion(&Test::sum, 33, 44) );
答案 0 :(得分:0)
给定函数T f();
,可以像这样提取返回类型(需要C++11
):
typedef decltype(f()) ReturnType;
现在ReturnType
等于在上面输入T
。