为什么 std::strong_ordering 有一个“等效”值?

问题描述

std::strong_ordering 的有效值为 @varlessequalequivalent。但是,似乎 greaterstrong_ordering::equivalent 是相等的(ie,可互换),因为在这两种情况下,仅说明性的 strong_ordering::equal 字段都为零,并且不是仅用于说明的构造函数要初始化的其他状态。

value 没有任何单独 strong_ordering 值是有道理的,因为当排序很强时,等效值总是相等的。但是,让 equivalent 成为 strong_ordering::equivalent 的同义词而不是根本不定义它有什么意义?

解决方法

这允许为所有比较类别 C::equivalent 定义 C。以前有五个,所有的都有这个,现在只有三个。

如果您需要类似的东西,拥有它会有所帮助。提供它不需要任何费用,所以......就是这样。