| P0683R1: ビットフィールドのメンバ変数初期化 |
ビットフィールドメンバ変数のデフォルト値を設定する構文を追加する |
8 |
6.0 |
2021.4 |
2019 Update 5 |
P0409R2: ラムダ式のキャプチャとして[=, this]を許可する |
デフォルトコピーキャプチャとthisポインタのコピーキャプチャを両方指定できるようにする |
8 |
6.0 |
2021.4 |
2019 Update 2 |
P0806R2: [=]によるthisの暗黙のキャプチャを非推奨化 |
コピーのデフォルトキャプチャでは、thisポインタをキャプチャされなくする |
9 |
- |
No |
2019 Update 2 |
| P0428R2: ジェネリックラムダのテンプレート構文 |
ジェネリックラムダでテンプレートパラメータを定義できるようにする |
8 |
9.0 |
2021.4 |
2019 Update 2 |
P0704R1: const修飾されたメンバポインタの制限を修正 |
.*演算子での左辺値のconstメンバ関数呼び出しを許可する |
8 |
6.0 |
2021.4 |
2015 |
| P0306R4: 可変引数が空でない場合のトークン置換 |
プリプロセッサの置換で可変引数が空の場合に余計なカンマが付いてしまう問題に対処 |
8 (partial, #__VA_OPT__による文字列化が未サポート) 10 (partial, placemarker token のハンドリング変更なし) 12 |
6.0 9.0 (p1042) |
2021.4 |
2019 Update 5 |
| P0329R4: 指示付き初期化 |
波カッコによる集成体初期化でメンバ名を指定して初期化できるようにする |
8 |
6.0 (partial) 10 |
2021.4 |
2019 Update 1 |
| P0734R0: コンセプト |
テンプレートパラメータに対する制約を行う |
10 |
10 |
2021.6 |
2019 Update 3 |
| P0614R1: 初期化式をともなう範囲for文 |
範囲for文スコープで使用する変数の初期化のための構文を追加 |
9 |
8.0 |
2021.7 |
2019 Update 5 |
| P0588R1: 暗黙のラムダキャプチャを簡略化 |
ラムダ式のキャプチャに関する仕様整理 |
8 |
No |
2021.4 |
2019 Update 4 |
| P0846R0: 関数テンプレートに明示的に型指定した場合にADLで見つからない問題を修正 |
名前空間内の関数テンプレートをテンプレート引数指定かつ非修飾・ADLで正しく呼び出せるよう修正 |
9 |
9.0 |
2021.4 |
2019 Update 1 |
P0641R2: デフォルトのコピーコンストラクタと非constなコンストラクタが衝突する問題を修正 |
非constなオブジェクトをとるコンストラクタを定義すると、そのクラスをラップしたクラスのコピーコンストラクタが不適格になってしまう問題を修正 |
9 |
8.0 |
2021.4 |
2015 |
| P0859R0: 評価されない文脈での定数式評価によって特殊メンバ関数がインスタンス化されることを規定 |
sizeofやdecltypeなどの評価されない文脈において定数式評価を行った場合に、ムーブコンストラクタのような特殊メンバ関数が定義されることを規定 |
9 |
8 |
No |
2019 Update 7 (partial) 2022 Update 1 |
P0515R3: <=>/==による比較演算子の自動定義 |
三方比較演算子によって比較演算子の自動生成を行うようにする |
10 |
8.0 (partial) 10 |
2021.4 |
2019 |
| P0692R1: 特殊化のアクセスチェック |
|
Yes |
14 |
2021.4 |
2019 Update 6 |
| P0624R2: 状態を持たないラムダ式を、デフォルト構築可能、代入可能とする |
キャプチャしていないラムダ式をデフォルト構築・代入可能にする |
9 |
8.0 |
2021.4 |
2019 Update 2 |
| P0767R1: PODを非推奨化 |
PODという用語を非推奨化する |
10.1 |
21 |
2021.4 |
2019 Update 5 |
| P0315R4: 評価されない文脈でのラムダ式 |
評価されない文脈でもラムダ式を書くことができるようにする |
9 |
17 |
2024.0 |
2019 Update 8 |
| P0840R2: 空オブジェクトを言語サポート |
[[no_unique_address]]属性を導入し、空の型のオブジェクトをほかのオブジェクトと共有する最適化を許可する |
9 |
9.0 |
2021.4 |
2019 Update 9 †1 |
| P0962R1: 範囲for文がカスタマイゼーションポイントを見つけるルールを緩和 |
begin()/end()メンバ関数のどちらかが見つからなかった場合に非メンバ関数のbegin()/end()を探しにいく |
8 |
8 |
2021.4 |
2019 Update 5 |
| P0969R0: friend指定された関数内から構造化束縛を使用して非公開メンバ変数にアクセスすることを許可 |
構造化束縛の仕様として公開メンバ変数のみを取り出せるようになっていたが、friend指定された関数からは非公開メンバ変数にもアクセスできるようにする |
8 |
8.0 |
2021.4 |
2019 |
| P0961R1: 構造化束縛がカスタマイゼーションポイントを見つけるルールを緩和 |
非テンプレートのget()メンバ関数が見つかった場合は、非メンバ関数のget()を探しにいく |
8 |
8.0 |
2021.4 |
2019 |
P0634R3: 型の文脈でtypenameの省略を許可 |
型しか現れない文脈では、依存名を解決するためのtypenameキーワードを省略できるようにする |
9 |
16 |
2023.1 |
2019 Update 9 |
| P0780R2: ラムダ式の初期化キャプチャでのパック展開を許可 |
[...args = std::move(args)]のようなキャプチャを許可 |
9 10 |
9.0 |
2021.7 |
2019 Update 2 |
P0479R5: 確率が高い分岐と低い分岐を伝える属性 [[likely]], [[unlikely]] |
条件分岐の最適化ヒントを与える属性 |
9 (partial, switch 文のみ可能) 10 |
12.0 |
2021.7 |
2019 Update 6 |
| P0929R2: 抽象型のチェック |
関数の宣言段階では、パラメータおよび戻り値型が抽象型かどうかをチェックしないようにする |
11 |
- |
No |
2019 Update 5 |
| P0732R2: 非型テンプレートパラメータとしてクラス型を許可する |
定数式として使用できる型を広く非型テンプレートパラメータとして使用できるようにする |
9 |
12 |
2022.2 Partial |
2019 Update 6 |
P0722R3: 可変長データを扱うクラスの効率的なdelete |
クラスのdelete演算子が呼び出される前にデストラクタが呼ばれないようにするオプションを追加 |
9 |
6.0 |
2023.0 |
2019 Update 7 |
| P1064R0: 定数式からの仮想関数の呼び出しを許可 |
仮想関数にconstexprを付けられない制限を解除 |
9 |
9.0 |
2021.4 |
2019 Update 9 |
P1327R1: 定数式でのdynamic_cast、多態的なtypeidを許可 |
定数式での動的多態を許可 |
10 |
9.0 |
2021.4 |
2019 Update 9 |
| P1002R1: constexpr関数内でのtry-catchブロックを許可 |
constexpr関数内でtry-catchブロックを書けるようにする |
9 |
8.0 |
2023.1 |
2019 Update 5 |
P1073R3: 常に定数式評価するconsteval |
constevalキーワードを追加し、常に定数式評価されるよう指定できるようにする |
11 |
15 |
2021.4 |
2019 Update 10 |
| P1330R0: 定数式内での共用体のアクティブメンバの変更を許可 |
共用体メンバの書き換えを定数式内で行えるようにする |
9 |
9.0 |
2021.4 |
2017 |
| P1008R1: ユーザー宣言したコンストラクタを持つクラスの集成体初期化を禁止 |
コンストラクタがdelete/default宣言されているクラスを、集成体初期化によってコンストラクタ呼び出しを回避して構築できてしまっていた技法を禁止 |
9 |
8.0 |
2021.4 |
2019 |
P0892R2: 関数を条件付きでexplicitにする構文を追加 |
explicit(true)のようにexplicitに真理値パラメータを指定できるようにする |
9 |
9.0 |
2021.4 |
2019 Update 2 |
| P1236R1: 符号付き整数型が2の補数表現であることを規定 |
符号付き整数型のビット表現を2の補数に規定する |
9 |
9.0 |
2023.0 |
2022 Update 14 |
P0482R6: UTF-8エンコーディングされた文字の型としてchar8_tを追加 |
UTF-8エンコードされた文字かどうかでオーバーロード・特殊化をできるようにする |
9 |
7 (-fchar8_tオプションが必要) 8 (-std=c++20で有効化) |
2021.4 |
2019 Update 2 |
| P1094R2: 入れ子名前空間定義でのインライン名前空間 |
namespace ns1::inline ns2::ns3 {}のように、入れ子名前空間を定義する式にインライン名前空間の指定を含められるようにする |
9 |
8.0 |
2021.4 |
2019 Update 7 |
| P1091R3: 構造化束縛を拡張して通常の変数宣言のように使用できるようにする |
記憶域指定子としてstaticとthread_localの指定を許可 |
10 |
8.0 (partial) 16 |
2021.4 |
2019 Update 4 |
| P1381R1: 構造化束縛した変数の参照キャプチャを許可 |
構造化束縛をした変数は特殊な扱いのためラムダ式で参照キャプチャできない規定となっていたがこれを許可する |
8 |
8.0 (partial) 16 |
2021.4 |
2017 Update 3 |
| P0960R3: 丸カッコの値リストからの集成体初期化を許可 |
T x{1, 2, 3};と同様にT x(1, 2, 3);でも集成体初期化できるようにする |
10 |
16 |
2021.4 |
2019 Update 8 |
P1009R2: new式での配列要素数の推論 |
double* p = new double[]{1,2,3};を許可 |
11 |
9 |
2021.4 |
2019 Update 7 |
P1041R4: char16_tとchar32_tの文字・文字列リテラルを、文字コードUTF-16/32に規定 |
__STDC_UTF_16__、__STDC_UTF_32__の定義に関係なく、char16_t、char32_tのリテラルをUTF-16/32文字コードに規定する |
10 |
Yes |
2023.0 |
2015 |
| P1103R3: モジュール |
ヘッダファイル・ソースファイル、インクルードに変わる仕組みとしてモジュールを導入する |
11 (-fmodules-tsが必要) |
8.0 partial (-fmodules, -fmodules-tsが必要) 15 |
2023.1 (partial) |
2019 Update 8 |
| P0912R5: コルーチン |
関数実行を中断・再開する仕組みとしてコルーチンを導入する |
10 (-fcoroutinesが必要) 11 (-std=c++20で有効化) |
8.0 (partial) |
2021.4 |
2019 Update 8 |
| P1161R3: 添字演算子内でのカンマ演算子の使用を非推奨化 |
ar[i, j]を非推奨化。ar[(i, j)]はOK |
10 |
9.0 |
2021.6 |
2019 Update 5 |
| P1331R2: constexpr関数内でのトリビアルなデフォルト初期化を許可 |
constexpr関数内でのデフォルト初期化を許可し、未初期化値を読むことのみ禁止する |
10 |
10.0 |
2022.3 |
2019 Update 7 |
| P0848R3: 条件付きで特殊メンバ関数をトリビアルに定義するように |
制約によってトリビアルな特殊メンバ関数と非トリビアルな特殊メンバ関数をオーバーロードできるようにする |
10 |
16 (partial) 19 |
2022.3 |
2019 Update 8 |
P1301R4: [[nodiscard]]属性に理由となる文字列を付加できるようにする |
関数の戻り値を無視してはならない理由を関数宣言に持たせ、警告メッセージに役立てる |
10 |
9.0 |
2021.6 |
2019 Update 5 |
| P1099R5: スコープ付き列挙型のusing宣言 |
using enum EnumType;もしくはusing EnumType::enumeratorとすることで、列挙値のスコープ指定を省略できるようにする |
11 |
13 |
2023.0 |
2019 Update 4 |
| P1816R0: 集成体クラステンプレートのテンプレート引数推論 |
クラステンプレートのテンプレート引数推論はコンストラクタ引数から推論されるが、集成体初期化からも推論できるようにする |
10 |
17 |
2024.0 |
2019 Update 7 |
| P1668R1: constexpr関数内で未評価のインラインアセンブリを許可することによる組み込み関数のconstexpr有効化 |
コンパイル時に評価されない場合にconstexpr関数にasm定義を含めることを許可 |
10 |
10.0 |
2022.3 |
2019 Update 9 |
| P0388R4: 要素数不明の配列への変換を許可 |
要素数が判明している配列から、要素数が不明の配列への変換を許可 |
10 |
14 |
2021.6 |
2019 Update 7 |
P1143R2: コンパイル時初期化を強制するconstinitキーワードを追加 |
初期化のみコンパイル時におわらせたい場合に使用する |
10 |
10.0 |
2022.3 |
2019 Update 10 |
P1152R4: ほとんどのvolatileを非推奨化 |
volatileの有用な機能のみを残し、効果が疑わしい、または壊れている機能を非推奨化する |
10 |
10.0 |
2021.6 |
2019 Update 7 |
| P1814R0: エイリアステンプレート経由でのクラステンプレートのテンプレート引数推論 |
エイリアステンプレートからクラステンプレートのテンプレート引数を推論できるようにする |
10 |
19 (partial) |
No |
2019 Update 7 |
P0784R7: 可変サイズをもつコンテナのconstexpr化 |
constexpr記憶域をもつメモリアロケータの存在を考慮することで、可変サイズをもつコンテナをコンパイル時に使用できるようにする |
10 |
10.0 |
2021.6 |
2019 Update 9 |
P1957R2: ポインタからboolへの変換を縮小変換とする |
ポインタからbool値への変換を縮小変換と規定することで、意図しない変換を防止する |
10 |
11.0 |
- |
2019 Update 7 |