c++ - std::less<void> 和指针类型

标签 c++ language-lawyer c++14

std::less<T *>保证提供全序,无论两个指针是否指向同一个数组。

在最新的标准草案中,透明函数对象也是如此std::less<void> ( std::less<> ) 当你调用它的 operator() 时?

显然,同样的问题适用于 std::greater ,但我假设它们的指定相同。

最佳答案

github 的当前草案不包含任何与此相关的语言;事实上,它的定义 less<>明确地说“返回std::forward<T>(t) < std::forward<U>(u)”,这对于不可比较的指针来说是未定义的行为。所以……我想不要这样做。

如果您需要一个异构指针比较器,最好编写您自己的使用std::less<T*>() 的模板谓词。在适当的时候。

关于c++ - std::less<void> 和指针类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079958/

相关文章:

c++ - opengl 2.1 和纹理

c++ - 在 C++ 中的类中定义具有固定大小的 vector ?

c++ - C、C++ 中 __func__ 标识符的用例?

c++ - c++20中类模板构造函数可以有冗余模板参数列表吗

c++ - 通过指向 int 的指针为 char 数组起别名合法吗?

c++ - 在 C++20 中,如果宏是 #undef'd,然后又是 #define'd,那么它是否被认为是 "active"?

c++ - 仿函数/函数对象的 is_function 类型特征

c++ - 使 sfinae 适用于具有推导返回类型的函数?

c++ - 基于继承关系的模板友情

c++ - 在 Windows 和 Linux 中针对 C++ 中的冒泡排序运行时获得不同的输出