QLib::Event C++委托库实现之TypeLength

QLib::Event委托库下载 http://upload.programfan.com/upfile/200548160qevent.rar

QLib::Event委托库支持0-9参数的任意委托声明。

QLib::Event<void> ev0;

QLib::Event<int,int> ev1;

QLib::Event<int,int,int> ev2;

实现核心为TypeLength - 推导实际输入的参数个数。

struct NullType;

template <typename T1 = NullType, typename T2 = NullType, typename T3 = NullType, typename T4 = NullType, typename T5 = NullType, typename T6 = NullType, typename T7 = NullType, typename T8 = NullType, typename T9 = NullType>
struct Length
{
 template <typename T1 = NullType>
 struct Len
 {
  enum{value = 1};
 };
 template<>
 struct Len<NullType>
 {
  enum {value = 0};
 }; 
 enum enum_len {value = Len<T1>::value + Len<T2>::value+Len<T3>::value+Len<T4>::value+Len<T5>::value+Len<T6>::value+Len<T7>::value+Len<T8>::value+Len<T9>::value};
};

利用Length::value可以得到实际输入的参数个数,例如

Length<void>::value为1;

Length<void,int,int>::value为3.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值