std::less<T *>
都可以保证提供总顺序。
在标准的最新草案中,当您调用std::less<void>
时,透明函数对象std::less<>
(operator()
)是否也是如此?
显然,同样的问题适用于std::greater
,但我认为它们的具体情况相同。
答案 0 :(得分:5)
来自github的当前草案不包含任何语言;实际上,它对less<>
的定义明确地说“返回std::forward<T>(t) < std::forward<U>(u)
”,这对于无法比较的指针来说是未定义的行为。所以...我想不要这样做。
如果需要异构指针比较器,最好编写自己的模板谓词,在适当的时候使用std::less<T*>()
。
答案 1 :(得分:-5)
std::less<void>
是未定义的行为。 std::less
需要指针类型(有特殊规则)或定义<
的类型。