为什么null std ::可选的被认为小于任何值,而不是更多



让null std ::可选的数学意义低于任何保持价值?还是仅是为了一致性而制造的,如果它是"更多"而不是"少"?

,那将没有任何区别

直接来自提案(强调我的(:

已经提出了许多方法将脱离状态包括在比较中。已提出的,已经制作了,以使等效性和严格的弱排序的公理被保留:脱离接合的 optional<T>被简单地视为T的附加和独特的值仅与自身相等;该值总是比T的任何值小。

进一步说

nullopt可能被认为大于T的任何值。选择在很大程度上是任意的。我们选择坚持boost::optional的作用。


看一下boost::optional的看法,我们从其文档中获得:

以类似的方式,每当TLessThanComparable时,optional<T>类型为LessThanComparable。将包含无值比较的可选对象小于T的任何值。为了说明这一点,如果size_t的默认排序为{0, 1, 2, ...},则optional<size_t>的默认排序为{boost::none, 0, 1, 2, ...}。该顺序没有实用的解释。目的是进行任何语义上正确的默认排序,以使optional<T>在有序的关联容器中可用(无论T可用(。

所以不,除了"没有什么比某物"之外,这一切都没有"数学意义"。这是一个任意选择的无实际后果的选择,只是确保可以在没有太多麻烦的有序容器中使用类型。

最新更新