在编译期,获得函数参数个数

#if _MSC_VER >= 1900

#define _CONST_EXPR constexpr
#define _NO_EXCEPT noexcept
#else
#define _CONST_EXPR inline
#define _NO_EXCEPT throw()
#endif
#define MYLIB_START namespace myLib{
#define MYLIB_END   }
MYLIB_START
template<typename _FuncTy>
struct _get;
template<typename _RetTy, typename... paramsTy>
struct _get<_RetTy(*)(paramsTy...)>
{
 static size_t const value = sizeof...(paramsTy);
};
template<typename _FuncTy>
_CONST_EXPR size_t getParamNum(_FuncTy) noexcept
{
 return _get<_FuncTy>::value;
}
MYLIB_END
#undef  MYLIB_START
#undef  MYLIB_END
int testFunc0()
{
 return 0;
}
int testFunc1(int i, int k)
{
 return 0;
}
int testFunc2(int i, int k, int c)
{
 return 0;
}
void main()
{
 size_t i0 = myLib::getParamNum(testFunc0);
 size_t i1 = myLib::getParamNum(testFunc1);
 size_t i2 = myLib::getParamNum(testFunc2);
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值