草庐IT

c++ - 使用Boost获取成员函数的arity和paramerter类型? ( boost::函数特性)

对于普通函数,它工作得很好。下面的代码工作得很好。它只打印应有的内容:int__cdecl(int,char)2int,char#include#include#include#includeusingstd::cout;usingstd::endl;intfoo(int,char){return0;}intmain(){typedefBOOST_TYPEOF(foo)foo_type;;typedefboost::function_traitsfunction_traits;cout那么,问题是,如果foo是类bar的成员函数,我们该如何做到这一点?structbar{intfoo(

C++0x : overloading on lambda arity

我正在尝试创建一个可以使用带有0、1或2个参数的lambda调用的函数。由于我需要代码在g++4.5和vs2010(不支持可变参数模板或lambda转换为函数指针)上工作,所以我想到的唯一想法是根据元数选择要调用的实现。以下是我对这应该如何看的非工作猜测。有什么方法可以修复我的代码,或者有更好的方法来解决这个问题吗?#include#includeusingnamespacestd;templatestructarity;templatestructarity{staticconstintval=0;};templatestructarity{staticconstintval=1;}

reflection - 戈朗 : Function to determine the arity of functions?

是否可以编写一个函数来确定任意函数的元数,这样:1.funcmult_by_2(xint)int{return2*x}fmt.Println(arity(mult_by_2))//Prints12.funcadd(xint,yint)int{returnx+y}fmt.Println(arity(add))//Prints23.funcadd_3_ints(a,b,cint)int{returnb+a+c}fmt.Println(arity(add_3_ints))//Prints3 最佳答案 您可以使用reflect编写这样的函数
12