」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼 `std::Optional` 缺乏引用型別專業化?

為什麼 `std::Optional` 缺乏引用型別專業化?

發佈於2024-11-08
瀏覽:948

Why Does `std::optional` Lack Reference Type Specializations?

問題:探索std::Optional 中引用類型特化的缺失

在標準C 中,探索std::Optional 提供了一個容器保留一個值或指示其不存在。然而,與 Boost 中的對應項不同,std::Optional 缺乏引用類型的專業化,這給使用者留下了一個問題:為什麼?本文深入探討了這項設計決策背後的原因,並探討了標準庫中可用的替代選項來處理對可選值的引用。

答案:解決問題和未來前景

在關於可選值的初始提案 (n3406) 期間,委員會成員對可選參考提出了擔憂。隨後,在n3527中,作者提出將可選參考文獻分離成輔助提案,以提高可選值被採納的機會。

雖然可選參考文獻由於其他因素沒有被納入C 14中,但並沒有被拒絕委員會。如果提交提案,則有可能將可選引用合併到未來的 C 標準中。

引用可選值的替代方案

儘管沒有std::對於引用類型的可選專業化,標準庫確實提供了引用可選值的替代方法:

  • std::reference_wrapper<:optional>>:這允許您建立對可選值的引用,確保對可選值所做的變更將反映在引用中。然而,值得注意的是,如果引用是常數引用(即使用 std::cref 初始化),則可選值保持不可變。

總之,缺乏引用類型專業化std::Optional 源自於提案過程中的關切。然而,委員會仍願意考慮未來的可選參考資料。此外,標準函式庫提供了 std::reference_wrapper<:optional>> 作為暫時引用可選值的替代方法。

最新教學 更多>
  • 讀取控制台輸入
    讀取控制台輸入
    InputStream讀取方法: read():允許您直接從流中讀取位元組。 read()的三個版本: int read():讀取單一位元組並在流末尾返回-1。 int read(byte data[]):讀取字節,直到資料數組填滿、到達流末尾或發生錯誤。傳回讀取的位元組數,如果到達流末尾則回傳...
    程式設計 發佈於2024-11-08
  • PHP 建構函式屬性推廣初學者指南
    PHP 建構函式屬性推廣初學者指南
    PHP 8 引進了一個名為 建構子屬性提升 的奇妙功能。如果您是 PHP 或一般程式設計新手,這可能聽起來有點複雜。但別擔心!本部落格將透過大量編碼範例向您介紹它是什麼、為什麼有用以及如何使用它。開始吧! 什麼是建築商財產促銷? 在 PHP 8 之前,建立具有屬性的類別並在建構函式...
    程式設計 發佈於2024-11-08
  • 如何在Ajax資料載入過程中顯示進度條?
    如何在Ajax資料載入過程中顯示進度條?
    如何在Ajax 資料載入期間顯示進度條處理使用者觸發的事件(例如從下拉方塊中選擇值)時,通常會使用非同步擷取資料阿賈克斯。在獲取數據時,向用戶提供正在發生某事的視覺指示是有益的。本文探討了一種在 Ajax 請求期間顯示進度條的方法。 使用 Ajax 實作進度條要建立一個準確追蹤 Ajax 呼叫進度的...
    程式設計 發佈於2024-11-08
  • 如何使用 CNTLM 存取工作場所代理程式後面的 pip?
    如何使用 CNTLM 存取工作場所代理程式後面的 pip?
    與CNTLM 的PIP 代理連接要使用CNTLM 訪問工作場所代理後面的pip,用戶可能會遇到--proxy 選項的問題。然而,利用環境變數提供了可靠的解決方案。 CNTLM 設定驗證可以透過執行「cntlm.exe -c cntlm.ini -I -M http://google.com」來實現。...
    程式設計 發佈於2024-11-08
  • 如何使用 MySQL 資料庫中的時間序列資料填入 JFreechart TimeSeriesCollection?
    如何使用 MySQL 資料庫中的時間序列資料填入 JFreechart TimeSeriesCollection?
    從 MySQL DB 填入 JFreechart TimeSeriesCollection此問題旨在使用 JFreechart TimeSeriesCollection 顯示一個月中幾天的溫度變化。然而,最初的實作面臨著從資料庫中準確讀取資料的挑戰。 時序資料的精確讀取要解決資料讀取問題,需要考慮之...
    程式設計 發佈於2024-11-08
  • ValueError:無法將 NumPy 陣列轉換為張量 - 已解決?
    ValueError:無法將 NumPy 陣列轉換為張量 - 已解決?
    ValueError: Failed to Convert NumPy Array to Tensor問題描述嘗試使用TensorFlow 訓練具有LSTM 層的神經網路時,出現下列情況發生錯誤:ValueError: Failed to convert a NumPy array to a Ten...
    程式設計 發佈於2024-11-08
  • 為什麼Java重載不能基於回傳類型?
    為什麼Java重載不能基於回傳類型?
    Java 中的回傳型別重載:不相容儘管Java 具有多方面的功能,但該語言在重載函數時還是存在限制僅透過變更返回類型。這就提出了一個常見的問題:為什麼 Java 會禁止這樣的重載? 答案在於重載的基本性質。重載允許多個具有相同名稱的函數共存於一個類別中,並透過它們的參數簽名進行區分。然而,當返回類型...
    程式設計 發佈於2024-11-08
  • 強密碼產生器
    強密碼產生器
    看看我做的這支筆!
    程式設計 發佈於2024-11-08
  • Angular 和 15 的改進
    Angular 和 15 的改進
    1) 在沒有建構子的情況下在 Angular 14 中使用注入註入服務。 以前,注入任何服務總是需要具有建構函數的類別: class MyClass { constructor(private myService: MyService) {} } 現在,我們可以在函數和類別中註入服務。我們只需...
    程式設計 發佈於2024-11-08
  • 物件導向程式設計:掌握 DSA 的第一步
    物件導向程式設計:掌握 DSA 的第一步
    Imagine you're walking through a bustling factory. You see different machines, each designed for a specific purpose, working together to create a fina...
    程式設計 發佈於2024-11-08
  • 如何修復 Android 中的“java.lang.String 類型的值無法轉換為 JSONObject”錯誤?
    如何修復 Android 中的“java.lang.String 類型的值無法轉換為 JSONObject”錯誤?
    排除「java.lang.String 類型的值\u003cbr\u003e 無法轉換為JSONObject」錯誤在您的Android 應用程式中,您遇到與JSON 解析相關的錯誤。具體來說,您會看到以下例外:org.json.JSONException: Value <br of type...
    程式設計 發佈於2024-11-08
  • 如何在 JavaScript 中強制硬刷新並防止快取問題?
    如何在 JavaScript 中強制硬刷新並防止快取問題?
    解決JavaScript 快取問題:使用JavaScript 清除快取部署新的JavaScript 程式碼時,看不到反映的最新更新是令人沮喪的。此問題通常是由於快取的瀏覽器回應而引起的。為了消除這個問題,我們可以利用 JavaScript 函數 window.location.reload(true...
    程式設計 發佈於2024-11-08
  • 如何在 Python 中使用 Inflect 將整數轉換為單字?
    如何在 Python 中使用 Inflect 將整數轉換為單字?
    在Python 中將整數轉換為單字在Python 中將數值轉換為對應的單字表示形式可能是一項令人費解的任務。本文探討了使用 inflect 套件的簡單解決方案。 困境:困境:該示例嘗試將歌曲“99 Bottles of Beer”打印在Wall”,用文字替換數值。然而,代碼目前顯示的是數字而不是它們...
    程式設計 發佈於2024-11-08
  • 關閉回應正文真的可以在 Go HTTP 用戶端中實現連線重用嗎?
    關閉回應正文真的可以在 Go HTTP 用戶端中實現連線重用嗎?
    Go HTTP 用戶端連線重複使用:常見誤解Go HTTP 用戶端預設設計為重複使用連接,提供高效率的網路使用率。然而,某些場景可能會導致對連接重用的誤解。 原始查詢:無限連接創建在給定的程式碼中,最初看起來無限數量的連接正在被創建。不過,這個問題可以透過在收到回應後關閉請求正文來解決。這使得傳輸能...
    程式設計 發佈於2024-11-08
  • 如何動態重定向Python函數中的標準輸出與錯誤流?
    如何動態重定向Python函數中的標準輸出與錯誤流?
    Python 中的上下文流重定向標準輸出和錯誤流(stdout 和stderr)的重定向在許多場景中證明是重定向在許多場景中證明是有用的。然而,當函數持有對這些流的內部引用時,傳統方法通常會出現不足。 需要動態解決方案傳統的重新導向技術,如 sys.stdout,永久重新導向流。當方法本質上在內部複...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3