簡體   English   中英

為什么null std :: optional被認為小於任何值,而不是更多

[英]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每當TLessThanComparable 不包含任何值的可選對象的比較小於任何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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM