[英]Why is null std::optional considered less than any value, not more
将null std :: optional小于任何保持值是否有任何数学意义? 或者只是为了保持一致性而且如果它是“更多”而不是“更少”则没有任何差别?
直接来自提案 (强调我的):
已经提出了许多将脱离状态包括在比较中的方法。 提出的那些,已被制作为使得等价和严格的弱序的公理被保留 :脱开
optional<T>
被简单地视为一个额外的和独特的价值T
等于不仅对本身; 该值始终被比较为小于T
任何值。
进一步说它
值
nullopt
可以被认为大于任何T
值。 选择在很大程度上是任意的。 我们选择坚持boost::optional
功能。
看一下boost::optional
对此的看法,我们从它的文档中得到:
以类似的方式,类型
optional<T>
是LessThanComparable
每当T
是LessThanComparable
。 不包含任何值的可选对象的比较小于任何T
值。 为了说明这一点,如果size_t
的默认顺序是{0, 1, 2, ...}
,则optional<size_t>
的默认顺序是{boost::none, 0, 1, 2, ...}
。 这个命令没有实际的解释。 目标是具有任何语义正确的默认排序,以便optional<T>
可用于有序关联容器(T
可用的任何地方)。
所以不,除了“没有什么比某些东西更少”之外,对这一切都没有“数学意义”。 只有确保类型可以在有序容器中使用而没有太多麻烦,这是任意选择,没有实际后果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.