【发布时间】:2014-03-18 06:31:50
【问题描述】:
关于比较两个指针的问题有很多,但我没有发现关于这两个类型是否可以比较指针。给定
A* a;
B* b;
我想知道表达式a @ b 是否有效,其中@ 是==,!=,<,<,<=,>,>= 之一(我不知道注意nullptr_t 或任何其他可以隐式转换为指针的类型)。是A, B的时候吗
- 相等?
- 除了 cv-qualification 是否相等?
- 在同一类层次结构中?
- ...?
我在std::type_traits 中没有找到任何内容。我总是可以进行自己的 SFINAE 测试,但我正在寻找直接应用它们的规则。我想这对编译器来说会更容易,对吧?
编辑 再次澄清:我比较的是指针,而不是指向的对象。我想提前知道a @ b 何时会给出编译器错误,而不是它的值是什么(真或假或未指定)。
【问题讨论】:
标签: c++ pointers typetraits comparison-operators