4 ポイント 投稿者 GN⁺ 2025-04-27 | まだコメントはありません。 | WhatsAppで共有
  • GCC 15はC++26機能を多数追加し、一部のC++23機能も改善
  • 主な追加機能は Pack IndexingVariadic Friends削除理由の明示構造化束縛の条件文 など
  • 新しいコンパイラオプションや警告も導入され、開発者体験が向上
  • C++モジュールのサポートが強化され、テンプレートのコンパイル速度最適化も行われた
  • GCC 15はFedora 42のデフォルトコンパイラとして採用され、まもなくRed Hat GCC Toolsetでも提供予定

GCC 15の新しいC++機能

  • GCC 15.1は2025年4月25日にリリースされ、C++26機能を本格的に導入
  • 依然としてデフォルト標準は gnu++17 で、-std=c++23-std=c++26 などで最新機能を有効化可能
  • C++20、C++23、C++26機能はまだ 実験的(experimental)

C++26の主な機能

  • Pack Indexing

    • Variadic Template引数の特定要素に pack...[N] 構文で直接アクセス可能
    • 反復のトリックなしに、最初の引数などをすっきり参照できる
  • Structured Bindingsの属性指定

    • 構造化束縛された各変数に個別に [[attribute]] を適用可能
    • 例えば、特定の束縛変数だけを [[deprecated]] にできる
  • 削除関数に説明を追加

    • = delete("理由") 構文で、削除された関数の呼び出しエラーに メッセージ を提供できる
  • Variadic Friends

    • テンプレートクラスで複数の型をまとめて friend 宣言可能
    • Passkeyパターン のようにアクセス制御の強化に有用
  • constexpr Placement New

    • std::allocator とplacement newをconstexprコンテキストで使用可能
  • 構造化束縛を条件文で使用

    • ifwhileswitch の条件文内で構造化束縛を宣言可能
    • 条件判定はコンパイラが生成した内部変数によって行われる
  • 不完全型の削除禁止

    • deletedelete[] が不完全型に対して使われた場合、C++26モードではコンパイルエラーになる
  • オックスフォードカンマ警告

    • Variadic関数宣言時に , ... なしで ... だけを使うパターンをC++26で警告
  • 配列比較の削除

    • 配列同士を == で比較するコードをエラーとして扱う
    • 従来のC++20では警告だったが、今後はC++26モードでコンパイルエラーに格上げ
  • #embed ディレクティブ

    • バイナリデータをソースコードに直接埋め込める #embed をサポート

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

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