【海外の反応】C++26が投票で異例の否決、contractsで意見対立

姉妹サイトの新着

C++の次期規格「C++26」が、ISOの最終承認段階であるDIS(Draft International Standard)投票で否決されるという、標準化史上初めての事態が起きた。原因とされるのが、関数の事前条件・事後条件をチェックする新機能「contracts」で、同じ草案に含まれていたreflectionやstd::execution、library hardeningといった注目機能も一緒に足止めされている。Hacker Newsのスレッドでは、否決は「信頼を揺るがす異例の行動」なのか「二段階承認という仕組みが正しく機能した結果」なのか、contractsと既存のconceptsの違いが分かりにくいこと、AI時代にcontractsのような機能がどう役立つかなど、立場の異なる声が交わされた。

C++26、承認されず

出典: andreasfertig.com / 元記事はこちら

5 海外の名無しさん 2026-11-04 03:36
個人的には、C++には新機能を増やすのを一旦やめて、char8_tとstd::filesystemのひどい状況を何とかしてほしい。
24 海外の名無しさん 2026-11-04 03:59
>>5
std::regex(という名前だったか)をもう少し速くしてほしいね。利点もないのに恐ろしく遅いらしいから。
51 海外の名無しさん 2026-11-04 04:45
>>24
これが実現しない主な理由は、C++の事実上安定したABI(公式にはそんなものは存在しないとされているが)を壊してしまうからだ。詳しい背景は当時の論文を見てほしい。ネタバラシすると、「絶対に避けてほしいリーダーシップの失敗」と呼ばれていた選択が、結局そのまま起きてしまった。
53 海外の名無しさん 2026-11-04 04:03
>>24
rangesもまだ改善の余地がかなりある。
7 海外の名無しさん 2026-11-04 04:28
DISの承認が、まさにランタイムで失敗したわけだ(笑)
8 海外の名無しさん 2026-11-04 05:17
reflection、std::execution、library hardeningといったC++26の主要機能も、同じ草案に含まれていたせいで一緒に遅延してしまった。
9 海外の名無しさん 2026-11-04 05:04
「“no”に投票することで、信頼と相互尊重に基づいていた既存の仕組みが揺らいでしまった」とあるが、理解できない。ISOがそもそも二段階の承認を求めているなら、その二段目の投票権を行使することがなぜ信頼への裏切りになるんだ?
25 海外の名無しさん 2026-11-04 05:16
>>9
自分も理解できない。どちら側にも肩入れしてないけど(C++を書かなくなって何年も経つが、昔は書いていた)。今の時点でこれを規格に入れるべきかどうかについて、本当に意見が分かれているようで、これはむしろプロセスが設計どおりに機能している例に見える。
10 海外の名無しさん 2026-11-04 04:22
C++はSIMDを、intrinsicsの巨大な塊じゃなく、もっと高レベルな言語として扱う方向に注力すべきだ。AVXのコードは読めたものじゃない。
27 海外の名無しさん 2026-11-04 05:21
>>10
SIMD/AVXを統一しようとするフレームワークはあるけど、その抽象化はタダじゃない。今必要なのはより良い抽象化じゃなくて、より良いハードウェアと低レベルインターフェースだと思う。
12 海外の名無しさん 2026-11-04 04:54
でも気になるのは、なぜ今回C++26でDISが否決されたのかってこと。これまで機能追加は普通に通ってきたんじゃないの?今回が標準化の合意形成プロセスで初めてDISが失敗した例らしいけど、それはなぜ?
13 海外の名無しさん 2026-11-04 03:16
読解力が落ちたのかもしれないけど、この記事、Contractsって何なのかをどこで説明してるのか見つけられなかった。
29 海外の名無しさん 2026-11-04 03:19
>>13
「c++ contracts」とかで検索すれば情報はたくさん出てくるよ。要するに、関数の事前条件・事後条件みたいなもの。assertを少し強化したものだと思えばいい。
30 海外の名無しさん 2026-11-04 03:22
>>13
正直かなり内輪向けの記事だよね。Contractsはプログラムの状態についてのアサーションをもっと柔軟に書けるようにする、提案中のC++の言語機能。要はC言語のassert関数のC++版強化みたいなもので、事前条件・事後条件のようなもっと複雑な条件を関数に付けられるようにして、安全性とパフォーマンスの両方を理論上改善するもの。
14 海外の名無しさん 2026-11-04 03:07
今回の件を機に、メモリ安全性についてもっと本気で考える時間にできるといいね。追記: なんでみんなそんなに怒ってるのか知りたい。
32 海外の名無しさん 2026-11-04 03:16
>>14
メモリ安全性は1959年、Lispの発明によって既に解決済みだよ。
16 海外の名無しさん 2026-11-04 03:41
もうこのプロジェクトは終わりにする時だ。C++は何年もかけて機能を積み上げすぎて、PL/Iみたいになってしまった。
17 海外の名無しさん 2026-11-04 03:21
これは社会全体にとっての予兆的な出来事のような気がする。いろんな立場の間の断絶がどんどん広がっていて、信頼が失われて合意に達せなくなっている。まあ自分の気のせいかもしれないけど。
18 海外の名無しさん 2026-11-04 03:57
昔はC++プログラマーだったけど、もう何年もやってない。今は低レイヤーのコードもだいたいRustでvibe codingしてる。C++はまだ現役なの?Rustが完全に取って代わらない理由は何?
37 海外の名無しさん 2026-11-04 03:59
>>18
君が使ってるRustも、だいたいはC/C++の環境の上で動いてるよ。
19 海外の名無しさん 2026-11-04 04:05
この段階まで来ると、主要なプログラミング言語への変更は、コードの大部分をAIシステムが生成・変更する世界に合わせていく必要がある。C++のcontractsが良いか悪いかはともかく、強力なAIコーディングシステムが登場する前の発想だ。だから考え方を見直す時期だと思う。2027年にAIシステムが何をしているかなんて誰にも分からないしね。
41 海外の名無しさん 2026-11-04 04:53
>>19
今回の提案自体を擁護するわけじゃないけど、contractsみたいな仕組みは、自動テストや静的型付けと同じ理由で、AIコーディングとかなり相性がいいと思う。
42 海外の名無しさん 2026-11-04 04:45
>>19
多くの人、特に能力の高いプログラマーほど、過去の戦争を戦い続けている。AIなんてそのうち消えて、また2019年みたいな感覚で仕事ができると思ってるみたいだ。
20 海外の名無しさん 2026-11-04 03:58
>>2
君のコメントを読んで気づいたんだけど、contractsってconcepts(要はバウンデッドジェネリクスだよね…?)とは別物なんだ。
44 海外の名無しさん 2026-11-04 04:03
>>20
Conceptsはコンパイル時に評価されて、テンプレートメタプログラミングをずっとエレガントにしてくれるもの。Contractsはランタイムチェックで、アサーションに近い。言い方を変えると、contractsとconceptsの関係は、assertとstatic_assertの関係と同じ。
45 海外の名無しさん 2026-11-04 04:54
>>20
conceptはテンプレート(C++でのジェネリクス)を制約するコンパイル時の要件のことだから、君の理解はだいたい合ってる。
46 海外の名無しさん 2026-11-04 04:14
>>20
Conceptsは型についてのコンパイル時の仕組みで、Contractsは値についてのランタイムの仕組み。
21 海外の名無しさん 2026-11-04 05:12
>>2
問題は、contractsを気に入らなかった一部の人たちが、C++26の承認に反対票を投じるというかなり極端な行動を取ったことだ(それと、君はcontractsが何なのかよく分かってないみたいだね)。

他サイトの新着

22 海外の名無しさん 2026-11-04 04:07
>>2
は?Conceptsは型の型みたいなもので、Contractsはもっと凝った構造化されたランタイムアサーション。一体どこが似てるんだ?全然別物だよ。
47 海外の名無しさん 2026-11-04 04:43
>>22
どちらも頭文字がCで、2音節で、規格に入るのに苦労した(している)。注意して見てないと混同しやすいよね。
49 海外の名無しさん 2026-11-04 04:16
>>22
まったくその通り!(HNの別スレでも同じ指摘がある)
57 海外の名無しさん 2026-11-04 04:20
>>28
で、この人はヒーローなのか悪役なのか?それもconcepts次第ってこと?
69 海外の名無しさん 2026-11-04 04:47
>>57
conceptsじゃなくて、contractsね。
58 海外の名無しさん 2026-11-04 03:48
>>29
こっちの記事のほうが入門にはいいと思う。cppreferenceはそれ自体が技術的すぎることが多いからね。でもより大きな問題は、contractsが実際にどう動くのかを示す十分に良い「見せ方」を見つけるのに自分は何度も検索しないといけなかったってことで、つまりその提唱者たちはまだ人々の心をつかみきれていない、というのが今回の件につながってるんだと思う。
70 海外の名無しさん 2026-11-04 03:57
>>58
自分はC++の人間じゃないけど、それはHoare logicっぽくてかなりかっこいいと思う。
61 海外の名無しさん 2026-11-04 04:45
>>38
TIOBEなんて意味のない指標だよ。とはいえ、今でもRustより多くの新規C++コードが書かれているのは事実。C++はいずれレガシーになると思うけど、まだそこには至ってないし、そうなったとしてもC++を書かなくなるまでには少なくとも数十年はかかるはず。
63 海外の名無しさん 2026-11-04 04:28
>>39
「GoかRust以外のほぼ全ての本番言語」の話だとしても、それらすら怪しい。RustはC++で書かれたLLVMに依存してるし、Goもプラットフォームによってはlibcを必要とする。

この話題の背景と論点

C++の規格化はISOの作業部会WG21が担い、最終草案(DIS: Draft International Standard)は加盟各国の投票で承認されるのが通例で、今回のような否決は初めてとされる。争点になったcontractsは、関数の事前条件・事後条件をassertより柔軟に書けるようにする機能で、スレッドでも「concepts」(テンプレートを制約するコンパイル時の仕組み)と名前や発音が似ているせいで混同する投稿が複数見られた。両者はコンパイル時と実行時という別の仕組みであり、読む際に区別しておくと理解しやすい。また否決によって、contracts以外にreflectionやstd::execution、library hardeningといった注目度の高い機能も同じ草案に含まれていたために足止めされている点は、スレッドでは言及されているが見落とされやすい事実だ。否決を「信頼の崩壊」と見るか「二段階承認という制度が正しく機能した結果」と見るかの評価の違いは、contracts自体の評価以上に、C++の標準化プロセスへの信頼度の違いを反映していると言える。

※本記事は海外掲示板 Hacker News のスレッド「C++26 Disapproved」から抜粋し、編集部で日本語に意訳したものです。訳文の責任は当サイトにあります。

この記事のリアクション

他サイトの新着

まだコメントはありません。

コメントする

誹謗中傷・個人を特定する書き込みは削除対象です。投稿は承認後に表示されます。

相互リンクサイト新着記事