GCC 15の新しいC++機能
(developers.redhat.com)- GCC 15はC++26機能を多数追加し、一部のC++23機能も改善
- 主な追加機能は Pack Indexing、Variadic 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]構文で直接アクセス可能 - 反復のトリックなしに、最初の引数などをすっきり参照できる
- Variadic Template引数の特定要素に
-
Structured Bindingsの属性指定
- 構造化束縛された各変数に個別に
[[attribute]]を適用可能 - 例えば、特定の束縛変数だけを
[[deprecated]]にできる
- 構造化束縛された各変数に個別に
-
削除関数に説明を追加
= delete("理由")構文で、削除された関数の呼び出しエラーに メッセージ を提供できる
-
Variadic Friends
- テンプレートクラスで複数の型をまとめて
friend宣言可能 - Passkeyパターン のようにアクセス制御の強化に有用
- テンプレートクラスで複数の型をまとめて
-
constexpr Placement New
std::allocatorとplacement newをconstexprコンテキストで使用可能
-
構造化束縛を条件文で使用
if、while、switchの条件文内で構造化束縛を宣言可能- 条件判定はコンパイラが生成した内部変数によって行われる
-
不完全型の削除禁止
deleteやdelete[]が不完全型に対して使われた場合、C++26モードではコンパイルエラーになる
-
オックスフォードカンマ警告
- Variadic関数宣言時に
, ...なしで...だけを使うパターンをC++26で警告
- Variadic関数宣言時に
-
配列比較の削除
- 配列同士を
==で比較するコードをエラーとして扱う - 従来のC++20では警告だったが、今後はC++26モードでコンパイルエラーに格上げ
- 配列同士を
-
#embed ディレクティブ
- バイナリデータをソースコードに直接埋め込める
#embedをサポート
- バイナリデータをソースコードに直接埋め込める
まだコメントはありません。