C++26標準化遇罕見挫敗,Contracts設計爭議成關鍵
기사 본문
6개 단락 · 단어를 탭(클릭)하거나 문장을 선택하면 번역 · 단어 탭/문장 선택으로 번역C++26國際標準草案未通過國際標準化組織(ISO)各國標準機構表決,新版標準發布時程面臨延後。C++標準委員會WG21成員Andreas Fertig指出,10月下旬結束的國際標準草案(DIS)表決未達所需的三分之二多數支持,主要爭議集中在契約(Contracts)功能是否已成熟到足以納入標準。
DIS是國際標準正式發布前的重要審查階段,Andreas Fertig表示,據他所知,這是C++主標準草案首次在此階段未獲通過。他查詢ISO系統後,只找到2006年的C++/CLI語言規範草案也曾遭遇類似情況,該專案最後停止。此次C++26草案雖已獲WG21多數支持,仍未能通過各國標準機構的審查。
Contracts讓開發者在程式中預先設定函式執行前後必須符合的條件,也能在執行期間檢查特定條件,例如要求輸入數值不得為負數,或運算結果必須落在指定範圍。程式執行時可檢查條件是否成立,但草案允許由編譯器實作決定檢查方式,包括略過檢查,或在發現違反條件後繼續執行。反對者質疑該設計無法提供一致的檢查保障,也認為功能仍缺乏充分的實際應用驗證。
Contracts的標準化爭議已持續多年,該功能原本曾納入C++20草案,但在2019年遭到移除,WG21隨後成立研究小組重新檢討。經過多年討論,Contracts再次獲得多數支持,並於2026年3月隨C++26草案通過WG21表決,進入ISO審查階段。然而,反對者仍認為現行設計不適合直接發布,支持者則主張相關問題已經過充分討論。
依照ISO程序,C++26後續可修訂草案重新表決、退回委員會審查、改以技術規格發布,或取消專案。無論採取何種方式,都可能延後新版標準發布,目前也尚未確定Contracts是否會被移除。
WG21預定11月16日在巴西召開會議,討論C++26後續處理方式。由於委員會內部對Contracts仍有明顯分歧,新版標準的發布時程及C++29後續工作安排,都可能受到影響。
단락별 번역이 어긋날 때
전문 번역
단어를 탭(클릭)하면 그 단어를, 문장을 선택하면 그 범위를 바로 번역합니다.