「賛成率60%で否決」C++26国際標準草案が歴史上初の不承認

「賛成率60%で否決」C++26国際標準草案が歴史上初の不承認

C++C++26ISOプログラミング言語標準化

データソース:HN + ISO/WG21 Papers

「Balloting has completed for C++26. Unfortunately it was Disapproved.」

2026年10月24日、C言語標準化委員会コンビーナのRobert Seacord氏がこの通報を公開した。同氏は、ISO/IEC JTC1/SC22の歴史において、プログラミング言語の国際標準草案が投票で否決された例は過去に一度も存在しないと言及した。WG21(C++標準化委員会)のDirection GroupメンバーであるDaveed Vandevoorde氏の指摘はさらに直接的だ。これまでC++草案がDIS(国際規格原案)段階で反対票を1票たりとも受け取ったことはなかった。30年におよぶ「DIS反対票ゼロ」の記録は、2026年10月23日をもって途切れることとなった。

C++26草案否決の本質は、標準化プロセスの信頼性危機にある。委員会内部の多数決で承認されたはずの機能に対し、反対派が各国標準化機関(NB: National Bodies)へロビー活動の場を移して阻止に動いた。この行動は3年サイクルの出版スケジュールを混乱させただけでなく、委員会内部の合意形成メカニズムそのものを根底から揺るがしている。

賛成率わずか60%:30年続いた満票通過の記録が終焉

ISOのDIS投票が承認されるためには、2つの条件を同時に満たさなければならない。参加した加盟国のうち賛成票が3分の2(66.7%)以上であること、かつ総投票数に対する反対票の割合が25%以下であることだ。どちらか一方でも基準を外れれば、草案は即座に否決(不承認)となる。

最終的な開票結果は手痛い二重の打撃となった。参加20カ国のうち賛成票は12票にとどまり、賛成率はわずか60%(合格ラインに2票不足)。さらに全22票のうち反対票は9票に達し、反対票率は上限25%を大幅に上回る41%を記録した。

賛成基準を満たせず、反対基準の上限をほぼ2倍近く超過したという事実は、各国の技術代表団の間で決定的な亀裂が生じていたことを示している。DIS段階で無傷のゼロ反対票を誇ってきたC++の30年の歴史が、ここに幕を閉じた。

コントラクト機能の対立が外溢:技術議論が国家機関へのロビー活動へ

この激震を引き起こした震源地は「コントラクト(契約プログラミング)」機能だ。コントラクトは、pre(事前条件)、post(事後条件)、そして contract_assert(契約アサーション)を言語コアに導入し、関数の事前・事後条件を明示することでソフトウェアの安全性と検証可能性を飛躍的に高めることを目指していた。

しかし、この機能の標準化プロセスは波乱の連続だった。2019年のケルン会議において、旧仕様が直前の激しい対立により撤回。その後、専門作業部会が設置され、数年の歳月をかけてゼロから再設計が進められた。2026年3月、WG21は多数決によって現行のP2900設計を承認するに至った。

しかし、委員会での多数決による可決は、完全な技術的合意を意味しなかった。反対派は依然としてP2900に根本的な欠陥があると主張し、未定義動作(UB)の扱いへの懸念や大規模な本番環境での検証不足を指摘した。一方、P4433R0などの推進派はこれらの主張に反論し、仕様を撤回すれば2019年以降の6年間に及ぶ再設計努力がすべて無に帰すと警告していた。

P4238対P4433:ガバナンスの傷口を露呈させた論文の激突

内部での対立はついに委員会の議事規範を飛び越え、公開のロビー活動へと発展した。2026年9月1日、Vinnie Falco氏ら4名のベテランメンバーが連名でWG21論文P4238R1を公開した。その表題は直接的なものだった。「スキップされた評価を行うため、C++26を差し戻せ」。

WG21論文P4238R1の表紙 図:C++26 DISへの反対票投じを各国標準化機関(NB)に呼びかけるWG21論文P4238R1の表紙。出典:WG21(open-std.org)

P4238R1は、従来の技術論文の範疇を完全に逸脱していた。4名の著者は各国標準化機関(NB)に対して直接呼びかけ、C++26 DISに対して公式に反対票を投じるよう公然と要請した。同陣営はP4334R0も公開し、コントラクトには根本的な欠陥があるとする請願書を回覧させた。

推進派も即座に反撃に出た。Timur Doumler氏やJohn Lakos氏をはじめとする十数名の中核メンバーが連名でP4433R0を提出した。その題名は真っ向から対立する「C++26からコントラクトを削除するな」というものだった。

WG21論文P4433R0の表紙 図:草案からのコントラクト削除に反対する中核著者たちの連名論文P4433R0。出典:WG21(open-std.org)

P4433R0は反対派の主張を項目ごとに論破した。そして、委員会内部の決定を受け入れず、外部の各国NBへの政治工作に持ち込んだ反対派の手法を痛烈に批判した。ドイツ代表のAndreas Fertig氏は今回の否決を「完全な大惨事」と評した。反対派はすでに内部で議論し尽くされた古い論点を繰り返しているにすぎず、本当に傷つけられたのは、標準化委員会が長年機能してきた合意形成のルールそのものであると指摘した。

9票の反対票の深層:小国委員会が抱える投票構造の脆弱性

ISOの公式規則により、各国NBの個別の投票内容は非公開とされている。しかしコミュニティで流通している非公式情報によると、デンマーク、スペイン、イタリア、日本、スウェーデンを含む9カ国が反対票を投じたとされる。この未確認リストの流出は、代議制の投票メカニズムそのものに対する疑問を急速に呼び起こした。

ポーランドの国内委員会メンバーの一人は、地方支部の実情を明かしている。投票締切の数日前、地方委員会では定足数を満たすためだけに奔走していた。長年登録されているメンバーの中にはすでに転職して登録メールがエラーで戻ってくる者もおり、日常的なC++技術議論への関与は極めて希薄だったという。

ISOの原則では「1国につき1票」が与えられる。議論が外部の国家手続きに移った場合、わずか数人しかいない小規模な地方委員会を説得する方が、WG21本会議に集まる数百人の専門家を納得させるよりも圧倒的に容易である。この制度の非対称性が、反対派のロビー活動に過大なテコの効果を与える結果となった。

4つの選択肢:コンパイラ実装は継続も、砕かれた信頼

史上初のDIS否決を受け、ISO手続き上WG21には4つの選択肢が残されている。草案を修正して第2回DIS投票を行うか、委員会草案(CD)段階まで差し戻すか、コントラクトを切り離して独立した技術仕様書(TS)とするか、あるいは規格プロジェクト自体を終了するかである。

P4238R1の共著者の一人であるJ. Daniel Garcia氏は、Seacord氏の投稿に対し極めて実際的な解決策を提示した。「問題視されている1つの機能を取り除けば、残りの標準はすぐに承認されるだろう」。Daveed Vandevoorde氏も、標準ライブラリの強化策を残しつつコントラクトをC++26草案から取り除く案に傾いている。技術的には最善ではなくとも、現時点で最も現実的な妥協案とみられている。

各国NBには12週間の修正意見提出期間が与えられており、締切は2027年1月中旬となる。WG21は2026年11月16日よりブラジルのブジオス(Búzios)で総会を開催予定だ。Vandevoorde氏は2026年内に修正DISの投票を行うことは困難とみており、2027年にずれ込むならば「C++27と呼ぶ方が実態に合っている」と述べる。新たな規格が正式発行されるまで、現行の国際標準は引き続きISO/IEC 14882:2024(C++23)となる。当初予定されていたC++29に向けた策定ロードマップは、今回の危機対応のために延期を余儀なくされた。

ClangやGCCなどの主要コンパイラはすでに採択された機能の実装を前進させており、既存の業務コードが直ちに影響を受けることはない。しかし、C++26のリリース時期は不透明となり、設計者がコントラクトの構文やセマンティクスを既定事項として扱うことはできなくなった。

この事態が突きつけた根深い問題は、ガバナンスの契約が揺らいだことにある。委員会内部で激論の末に下された合意が、外部ロビー活動によって容易に覆されたという前例は、合意形成プロセスの権威を失墜させた。規格書の条文修正には数カ月の妥協で済むかもしれないが、失われたルールへの信頼を取り戻すには、コミュニティにとって長く困難な時間が必要となるだろう。

参考リンク:

  • Andreas Fertig 個人ブログ:C++26 DIS failed, how does C++ survive?
  • WG21 論文 P4238R1:Returning C++26 for the Evaluation It Skipped
  • WG21 論文 P4433R0:Do not remove Contracts from C++26
  • WG21 論文 P4334R0 および関連議論
  • Robert Seacord氏によるC++26投票結果の公開通知