std :: less <void>和指针类型</void>

时间:2014-01-12 20:32:23

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

无论两个指针指向同一个数组,

std::less<T *>都可以保证提供总顺序。

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

显然,同样的问题适用于std::greater,但我认为它们的具体情况相同。

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:-5)

std::less<void>是未定义的行为。 std::less需要指针类型(有特殊规则)或定义<的类型。