[英]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.