有效侦测类是否有特定成员函数

核心思想和初版代码来自TopLanguage讨论组的akirya,见下。这里是检测是否有operator()

 

注意使用了对内部类Dummp的特化来确定取若干个同名成员函数地址中某一个,very good。这里涉及了一个很罕见的知识点:链接symbol可以作为模板的非类型参数。仔细瞅瞅那段代码 template < F >  struct Dummp {};  相信对大家来说都很奇葩吧,笔者当时也是吃了一惊,赶紧仔细查了一下c++ iso标准文档.  其它东西对于熟悉模板和SFINAE的人都不成问题。

 

把上述的代码c++化,注意它是用链接symbol来进行检查的,因此检查也包含只声明而没有定义的函数,所以最好不要用它来检查那些容易故意声明了却不定义的函数,如默认构造函数等。

 

这个东西boost上面都没有哦,svn上面的develop版我倒是看到了类似名字的头文件,签出下来一看完全是错误的,注释也是错的。国人威武哦。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值