概要

ISO C++標準化委員会(WG21)は、2026年3月23日から28日にかけてイギリス・ロンドン近郊のクロイドンで開催された会議において、C++26標準を正式に確定した。C++23以来となるこのメジャー改訂は、言語の安全性、表現力、並行処理能力を大幅に強化する広範な機能群を含んでおり、C++の歴史の中でも特に重要なリリースの一つとなる。2025年6月のソフィア(ブルガリア)会議でフィーチャーフリーズが完了し、2025年11月のコナ(ハワイ)会議で国際コメントの70%が解決された状態でロンドン会議に臨み、最終的な標準化作業が完了した。なお、今回の会議からGuy Davidsonが新たなWG21コンビナーを務めており、23年間その役割を担ったHerb Sutterからの世代交代も実現している。

主要な新機能

C++26で導入される主要機能は多岐にわたる。最も注目されているのがコントラクト(P2900)で、関数の事前条件(precondition)、事後条件(postcondition)、アサーション(contract_assert)を言語レベルで記述できるようになる。これにより、APIの契約を型システムと並ぶ形で明示的に表現でき、ソフトウェアの安全性と信頼性が向上する。コナ会議ではバグ修正とハードニング改善が採用され、「このアサーションは必ず実行時に検証されなければならない」と指定するメカニズムの設計も進められた。

静的リフレクションは、コンパイル時にプログラムの型情報や構造を検査・操作できる機能で、メタプログラミングの可能性を大きく広げる。meta::info型のハッシュサポート(P3816)や構造型判定(P3856)など、リフレクション関連の整備も進められた。

std::execution(P2300)は、Sender/Receiverモデルに基づく非同期実行フレームワークで、構造化された並行処理を標準ライブラリレベルで実現する。スケジューラアフィニティ(P3941)やSenderアルゴリズムのカスタマイズ修正(P3826)なども含まれている。

安全性とライブラリの強化

C++26は安全性を重視した設計が際立つ。エラネアスビヘイビア(Erroneous Behavior) の概念が導入され、未初期化変数へのアクセスなど従来は未定義動作だった操作が「定義されているが誤り」として扱われるようになった。コナ会議での改良により、影響範囲が特定の未初期化値のみに限定され、プログラム全体に波及しない設計となっている。また、std::arraystd::vectorstd::spanなど主要コンテナの標準ライブラリハードニング(P3471)により、境界チェックが強化された。

標準ライブラリには多数の新ヘッダと型が追加される。固定容量の動的配列std::inplace_vector、メモリ効率の高いstd::hiveコンテナ、BLAS準拠の線形代数インターフェース<linalg>、データ並列型std::simd、ロックフリーメモリ回収のためのハザードポインタとRCU、間接所有権ラッパーstd::indirectと型消去ユーティリティstd::polymorphicなどが含まれる。constexprの適用範囲も大幅に拡大され、constexprでの例外処理(P3068)が可能になった。

言語機能の改善と今後の展望

言語レベルでは、パックインデクシング(T...[N])による可変長テンプレート引数への直接アクセス、#embedプリプロセッサディレクティブによるバイナリファイルの直接埋め込み、= delete("理由")による削除理由の明示、構造化束縛の大幅な拡張(条件式での使用、constexpr対応、パック導入)など、開発者の生産性を向上させる多くの改善が盛り込まれた。一方、ショーストッパーとなるバグが発見されたトリビアルリロケータビリティはC++26から削除されており、将来の標準での再導入が検討される見込みである。

C++26の正式なISO標準としての発行は今後のISO手続きを経て行われる。主要コンパイラ(GCC、Clang、MSVC)での実装は段階的に進められており、一部の機能はすでにGCC 15やClang 19以降で利用可能となっている。コントラクトやstd::executionなどの大型機能の完全な実装にはさらに時間を要する見通しだが、C++の安全性・表現力・並行処理能力を次のレベルへと引き上げる重要なマイルストーンとなった。