3

嗨,假设我有一个 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)  );
4

1 回答 1

0

给定 function T f();,可以像这样提取返回类型(需要C++11):

typedef decltype(f()) ReturnType;

现在ReturnType等于T上面的类型。

于 2013-04-01T15:48:10.033 回答