例如,将std::variant<T1, T2>
与T1
或T2
进行相等比较将非常有帮助。到目前为止,我们只能与相同的变体类型进行比较。
答案 0 :(得分:7)
一个变体可能具有相同类型的多个重复项。例如。 std::variant<int, int>
。
std::variant
的给定实例在且仅当它们具有相同的变体替代方案且所述替代方案的值比较相等时,才与另一个实例进行比较。
因此,具有std::variant<int, int>
为0的index()
与具有std::variant<int, int>
为1的index()
不等于,尽管有效的替代方案具有相同的类型和相同的值。
因此,该标准未实现通用的“与T
比较”。但是,您可以使用<variant>
标头中的其他帮助程序实用程序(例如std::holds_alternative
和std::get<T>
)来设计自己的比较运算符重载。
答案 1 :(得分:2)
我无法回答问题的为什么部分,但是由于您认为能够将std::variant<T1, T2>
与T1
或{{ 1}},也许可以帮忙:
T2
答案 2 :(得分:0)
这是标准委员会的任意决定。
好,不是任意的 。关键是您具有比较严格的scale * ,其中包括:
这些都是有效的选择。 C ++委员会根据各种外部标准做出决定。尝试查找std::variant
提案,因为它可能说明了这些标准。
(*)-实际上是一个晶格。