C++26 國際標準草案遭 ISO 否決,Contracts 設計爭議成延期關鍵

BlueSky

AI 摘要

  • C++26 國際標準草案在 ISO 各國標準機構表決中未達三分之二多數,是 C++ 主標準草案首次在 DIS 階段未獲通過。
  • 爭議核心為 Contracts 功能允許編譯器略過檢查或違反條件後繼續執行,反對者認為缺乏一致保障與實務驗證。
  • WG21 預定 11 月 16 日在巴西開會討論後續,C++26 發布時程與 C++29 規劃都可能受影響。

C++26 國際標準草案(Draft International Standard,DIS)在國際標準化組織(ISO)各國標準機構的表決中,未達到所需的三分之二多數支持,使得新版標準的發布時程面臨延後壓力。C++ 標準委員會 WG21 成員 Andreas Fertig 指出,10 月下旬結束的 DIS 表決未能過關,主要爭議集中在「契約(Contracts)」功能是否已成熟到足以納入標準。他並表示,據其所知,這是 C++ 主標準草案首次在 DIS 階段未獲通過;查詢 ISO 系統後,只找到 2006 年的 C++/CLI 語言規範草案曾有類似情況,而該專案最後停止。

值得注意的是,C++26 草案在 WG21 內部其實已獲多數支持,仍未能通過各國標準機構的審查,顯示委員會共識與國家級投票之間存在落差。

Contracts 功能是什麼?爭議為何

Contracts 讓開發者在程式中預先設定函式執行前後必須符合的條件,也能在執行期間檢查特定條件,例如要求輸入數值不得為負數,或運算結果必須落在指定範圍內。問題在於,草案允許由編譯器實作自行決定檢查方式,包括略過檢查,或在發現違反條件後繼續執行。

反對者因此質疑,這樣的設計無法提供一致的檢查保障,也認為該功能仍缺乏充分的實際應用驗證;支持者則主張相關問題已經過充分討論,認為現行設計足以發布。

從 C++20 到 C++26 的曲折路

Contracts 的標準化爭議已延續多年。該功能原本曾納入 C++20 草案,卻在 2019 年遭到移除,WG21 隨後成立研究小組重新檢討。經過多年討論,Contracts 再次獲得多數支持,並於 3 月隨 C++26 草案通過 WG21 表決,進入 ISO 審查階段,如今又在 DIS 投票中受阻。

階段C++20C++26
Contracts 納入狀態曾納入草案,2019 年被移除通過 WG21 表決,進入 ISO 審查
後續處理委員會成立研究小組重新檢討DIS 表決未達三分之二多數,去留未定

ISO 程序下的四種可能走向

依照 ISO 程序,C++26 後續可採下列方式處理,但不論哪一種,都可能延後新版標準的發布:

  • 修訂草案並重新表決
  • 退回委員會審查
  • 改以技術規格(Technical Specification)形式發布
  • 取消專案

目前尚未確定 Contracts 是否會被移除。WG21 預定 11 月 16 日在巴西召開會議,討論 C++26 的後續處理方式。由於委員會內部對 Contracts 仍有明顯分歧,新版標準的發布時程及 C++29 的後續工作安排,都可能連帶受到影響。

Reference Link : ithome.com.tw

Related Articles

Stay Connected

0FansLike
0FollowersFollow
22,800SubscribersSubscribe
spot_img

Latest Articles