概要
MicrosoftはMSVC Build Tools 14.51 Previewにおいて、C++23言語機能のサポートを大幅に拡充した。現時点では/std:c++23previewおよび/std:c++latestスイッチで有効化できる。C++23の完全対応に向けて残り2機能(P2564R3とP0533R9)はバージョン14.52で追加予定であり、Visual Studio 2026 Insidersリリースに合わせて/std:c++23として正式サポートが開始される見通しだ。
追加された言語機能
14.51で実装された言語機能は多岐にわたる。コンパイル時評価の分野では、constexpr関数内でのstatic constexpr変数の許可(P2647R1)や、constexpr関数の制約緩和(P2448R2)が追加された。後者はコンパイル時実行が不可能な操作を含んでいてもconstexprとして宣言できるようにするもので、コードの表現力が向上する。
Unicodeサポートも強化され、数値・名前付きユニバーサル文字エスケープシーケンス(P2029R4、P2071R2)や文字セット・エンコーディング処理の改善(P2314R4)が加わった。そのほか、ポータブルなアサンプション(P1774R8)、複合文末尾でのラベル(P2324R2)、継承コンストラクタからのCTAD(P2582R1)、意味のあるエクスポート(P2615R1)なども実装されている。また、合計22件のCore Working Group(CWG)課題も解決された。
標準ライブラリの強化
標準ライブラリ(STL)面では特に注目すべき改善が多い。新たに<flat_map>(P0429R9)と<flat_set>(P1222R4)が実装された。これらはソート済み配列ベースのコンテナで、キャッシュ効率の高いデータ構造を標準で利用できるようになる。
型特性の分野では、一時的な参照バインディングを検出する型特性(P2255R2)とis_implicit_lifetime型特性(P2674R1)、明示的なライフタイム管理(P2590R2)が追加された。さらに<regex>の大規模なオーバーホールが行われ、20年来のスタックオーバーフロー問題を含む長年の正確性・パフォーマンス上の問題が解消されている。SIMDベクトル化アルゴリズムの対応プラットフォームも拡張され、既存のSSE4.2・AVX2に加え、新たにARM64 NEONがサポートされたことでARM64/ARM64ECプラットフォームでもSTLアルゴリズムのSIMD最適化が有効になる。Library Working Group(LWG)課題も18件解決された。
今後のロードマップ
C++23の完全サポートまでに残る2機能は、constevalの伝播(P2564R3)と<cmath>のconstexpr対応(P0533R9)だ。いずれも14.52 Previewで追加される予定であり、その後Visual Studio 2026 Insidersリリースで14.52がデフォルトになった時点で/std:c++23スイッチが有効化される。C++23はモジュール・constexprの大幅強化・Unicodeサポートなど多くの改善を含む重要なバージョンであり、MSVCの完全対応によってエコシステム全体の採用が加速することが期待される。