[c++11]编译期间判断两个类型的实例是否可以应用等于运算符

标题十分地长的样子、还是把以前写在其它地方的东西都搬到这个地方来了

我主要是想有两个类型分别是 A 和 B 的变量 a、b,能否在在编译期间获得一个 bool 常量,表示是否拥有 a == b 这样的运算

然后我们来看看测试的结果

这有什么用呢0 0、

你会发现如果你写了一个类似 delegate 的东西,在删除函数的时候(如果是仿函数之类的,没有比较运算符)会得到十分多的编译错误

有了这个东西我们就可以根据是否有 == 运算符来提供不同的比较行为,有就使用它、没有就使用自己定义的(比如说比较内存,或者直接 true)

虽然不能保证语义的正确,但是在某些情况下(比如 delegate),还是比较好的。

然后关于上面代码如果没有支持 c++11 的编译器,可以戳这里实验

Miskcoo's Space,版权所有丨如未注明,均为原创
转载请注明转自:http://blog.miskcoo.com/2014/06/cxx11-has-equal-operator

miskcoo

顺利从福州一中毕业!感觉大学周围都是聚聚十分可怕QAQ 想要联系的话欢迎发邮件:miskcoo [at] gmail [dot] com

Leave a Reply

Your email address will not be published. Required fields are marked *

NOTE: If you want to add mathematical formulas, use $$ to wrap them. For example, use $$x_0$$ to get $$x_0$$.

If you want to get a newline, hit Enter twice, that is, use double newlines to get a newline.