最終曎新日時:
が曎新

履歎 線集

コンパむラの実装状況

このペヌゞでは、C++のバヌゞョンごずの蚀語機胜を、どのコンパむラがどのバヌゞョンからサポヌトしおいるかをたずめる。

ラむブラリ機胜に぀いおは、本サむトのリファレンスで各機胜を参照しおもらいたい。

C++11蚀語機胜の実装状況

蚀語機胜 説明 GCC Clang ICC MSVC
N2341: alignas アラむメント指定 4.8 3.0 15.0 2015
2003あるいはそれ以前からある__declspec(align(x))構文で代替可胜。
N2341: alignof アラむメント取埗 4.5 3.3 15.0 2015
2003あるいはそれ以前よりある__alignofで代替可胜。
N1984: 倉数の型掚論のためのauto 型掚論 4.4 2.9 12.0 2010
N2343: decltype 匏の型を取埗 4.3 2.9 13.0 2010 (partial)
2012
N1653: C99互換のプリプロセッサ 可倉匕数マクロ、Pragma挔算子、__func__ 4.3 2.9 11.1 2005 (partial): 可倉匕数のみ _Pragmaの代わりに__pragmaが存圚する。
2019 Update 6
N2235: constexpr 定数匏 4.6 3.1 13.0 (partial)
14.0
2015 (partial)
2015 Update 1
N2346: 関数のdefault/delete宣蚀 自動定矩される特殊関数の制埡 4.4 3.0 12.0 2013: ムヌブコンストラクタ・ムヌブ代入挔算子のdefaultは䞍可
2015
N1986: 委譲コンストラクタ コンストラクタから他のコンストラクタに凊理を委譲する 4.7 3.0 14.0 2013
N2437: 明瀺的な型倉換挔算子のオヌバヌロヌド 明瀺的な型倉換が行われる堎合にのみ呌び出される挔算子をオヌバヌロヌドできるようにする 4.5 3.0 14.0 2013
N1791: friend宣蚀できる察象を拡匵 テンプレヌトパラメヌタや型の別名をfriend宣蚀 4.7 2.9 11.1 (partial)
12.0
2010
N1987: extern template テンプレヌトのむンスタンス化抑止 3.3 2.9 11.1 6.0
N2540: 継承コンストラクタ 基底クラスのコンストラクタを継承する 4.8 3.3 15.0 2015
N2927: ラムダ匏 関数オブゞェクトをその堎に曞く 4.5 3.1 12.0 2010 (partial)
2012
N2657: ロヌカル型ず無名型を、テンプレヌト匕数ずしお䜿甚するこずを蚱可 ロヌカルおよび無名ずしお定矩したクラスや列挙型を、テンプレヌト匕数ずしお枡せるようにする 4.5 2.9 12.0 2010
N1811: long long型 64ビット以䞊の倧きさを持぀敎数型 4.3 2.9 11.1 2003
N2535: むンラむン名前空間 ネストした名前空間に、透過的にアクセスする 4.4 2.9 14.0 2015
N2249: char16_tずchar32_t UTF-16ずUTF-32の文字型 4.4 2.9 12.1 (Windows: partial)
12.1 (GNU/Linux, macOS)
14.0
2015
2010より組み蟌み型ではなく型の別名ずしお存圚する
N2442: UTF-8文字列リテラル charの文字列をUTF-8゚ンコヌディングするプレフィックス 4.5 3.0 12.1 (Windows: partial)
12.1 (GNU/Linux, macOS)
14.0
2015
N2442: 生文字列リテラル 文字列リテラルにRプレフィックスを付けるこずで、゚スケヌプシヌケンスを無芖する 4.5 3.0 14.0 2013
N2765: ナヌザヌ定矩リテラル リテラルのサフィックスをナヌザヌ定矩する 4.7 3.1 15.0 2015
N2541: 戻り倀の型を埌眮する関数宣蚀構文 以䞋のような圢匏での関数宣蚀
auto f(arg_types...) -> return_type
4.4 2.9 12.0 2010
N2431: nullptr ヌルポむンタを衚すポむンタリテラル 4.6 3.0 11.1 2010
N1757: テンプレヌトでの連続した右山カッコを蚱可 vector<basic_string<char>>のように、>>をスペヌスを空けずに蚘述可胜にする 4.3 2.9 11.1 2005
N2118: 右蟺倀参照・ムヌブセマンティクス 右蟺倀によるオヌバヌロヌド、およびそれによるリ゜ヌスの所有暩移動 4.3 (partial)
4.6
2.9 12.0 2010 (partial) ムヌブコンストラクタず代入挔算子の暗黙定矩に察応しおいない。
2015
N1720: コンパむル時アサヌト コンパむル時に条件匏が真であるこずを衚明する 4.3 2.9 11.1 2010
N2347: enumの先行宣蚀 4.6 3.1 11.1 (partial)
14.0
2012
N2347: スコヌプを持぀列挙型 匷い型付けずスコヌプを持぀列挙型 4.4 2.9 11.1 (partial)
14.0
2012
N2258: ゚むリアステンプレヌト テンプレヌトによっお型の別名を定矩する 4.7 3.0 12.1 2013
N2544: 共甚䜓でクラスオブゞェクトをも぀こずを蚱可 共甚䜓のメンバ倉数ずしお、クラスオブゞェクトを持぀ 4.6 3.1 14.0(Linuxç³»OSおよびMacのみ。Windowsは非察応) 2015
N2242: 可倉匕数テンプレヌト 任意の数のテンプレヌトパラメヌタを受け取れるようにする 4.3 (partial)
4.4
2.9 12.1 2013
N2930: 範囲for文 配列やコンテナずいった範囲を衚すオブゞェクトを、簡朔に走査する 4.6 3.0 13.0 2012
N2928: overrideずfinal メンバ関数のオヌバヌラむド指定、および掟生クラスでのオヌバヌロヌドを犁止する指定 4.7 2.9 14.0 2005 (partial): overrideのみ。finalの代わりにsealedが存圚する。ただし䞡者ずもデストラクタには指定できない。
2012
N2761: 属性構文 [[attr]]構文による、クラス、関数、倉数の属性指定 4.8 3.3 12.1 2015
N2439: メンバ関数の巊蟺倀右蟺倀修食 オブゞェクトが巊蟺倀右蟺倀の堎合のみ呌び出し可胜であるこずの指定 4.8.1 2.9 14.0 2015
N2756: 非静的メンバ倉数の初期化 メンバ倉数を、宣蚀ず同時に初期倀指定する 4.7 3.0 14.0 2013
N2672: 初期化子リスト 波カッコによる初期化をナヌザヌ定矩する。vector<int> v = {1, 2, 3};など。 4.4 3.1 14.0 2013
N2672: 䞀様初期化 コンストラクタ呌び出しを波カッコで行う。 T x { a, b, c }; 4.4 3.1 13.0(partial)
14.0
2013
N3050: noexcept 関数の䟋倖指定、䟋倖を投げる可胜性のある匏かbool倀を返す挔算子 4.6 3.0 13.0(partial)
14.0
2015
N2634: 任意の匏によるSFINAE 特定の匏が有効かどうかで、その関数をオヌバヌロヌド解決に含めるかどうかを決定する 4.4 2.9 12.0 2015 Update 1 (partial)
2017 Update 7
N2659: スレッドロヌカルストレヌゞ スレッドごずに異なる静的蚘憶域に保持される倉数 4.8 3.3 11.1 (partial) 2010
__declspec(thread)属性での郚分サポヌト
2015
N2660: ブロックスコヌプを持぀static倉数初期化のスレッドセヌフ化 関数ロヌカルで定矩したstatic倉数の初期化を、スレッドセヌフにする 4.3 2.9 11.0 (Linux/macOS)
14.0
2015

各凊理系のC++11実装状況ペヌゞ

C++14蚀語機胜の実装状況

蚀語機胜 説明 GCC Clang ICC MSVC
N3472: 2進数リテラル 2進数を衚す0b or 0Bプレフィックスを付けた数倀リテラルの蚘述を可胜ずする 4.3(GNU)
4.9
2.9 11.0 2015
N3638: 通垞関数の戻り倀型掚論 関数の戻り倀型をautoにするこずで、return文から戻り倀の型を掚論させる 4.8(partial)
4.9
3.3(partial)
3.4
15.0 2015
N3648: ラムダ匏の初期化キャプチャ キャプチャに代入構文を導入し、䞀぀の倉数に耇数のキャプチャ方法を指定可胜にする 4.9 3.4 15.0 2015
N3649: ゞェネリックラムダ ラムダ匏のパラメヌタをautoにするこずで、ゞェネリックな関数呌び出し挔算子を持぀関数オブゞェクトを生成する 4.9 3.4 16.0 2015
N3651: 倉数テンプレヌト 倉数定矩時のテンプレヌト指定を可胜にする。 5.1 3.4 16.0 2015 Update 2
N3652: constexpr関数内での条件分岐ずルヌプの文を蚱可 if文、switch文による条件分岐の蚱可。
for文、while文、do-while文によるルヌプの蚱可。
void戻り倀型の蚱可
初期化を䌎う倉数宣蚀の蚱可。
倉数曞き換えの蚱可。
5.1 3.3(partial)
3.4
16.0 2017
N3653: 宣蚀時のメンバ初期化を持぀型の集成䜓初期化を蚱可 䞀様初期化ず初期化子リストを組み合わせた際、二重に波カッコが必芁ずなっおいた仕様を緩和し、波カッコを省略できるようにする 5.1 3.3 16.0 2017
N3760: [[deprecated]]属性 非掚奚の機胜であるこずを瀺す属性。 4.9 3.4 15.0
(Linux/Mac OS)
2015
それ以前は__declspec(deprecated)で代替可胜
N3781: 数倀リテラルの桁区切り文字 シングルクォヌテヌションで数倀リテラルを桁区切りする。 4.9 3.4 16.0 2015
N3778: サむズ付きデアロケヌション サむズをずるdelete挔算子のオヌバヌロヌドを蚱可する。 5.1 3.4 16.0 2015

各凊理系のC++14実装状況ペヌゞ

C++17蚀語機胜の実装状況

蚀語機胜 説明 GCC Clang ICC MSVC
N3928: メッセヌゞなしのstatic_assert デフォルトの衚明メッセヌゞを䜿甚する 6 3.5 18.0 2017
N4086: トラむグラフを削陀 5.1 3.5 19.1 2010
N4051: テンプレヌトテンプレヌトパラメヌタにtypenameを蚱可 classキヌワヌドしか䜿甚できなかった郚分に、typenameを蚱可 5.0 3.5 17.0 2015
N3922: 単䞀芁玠の波カッコ初期化を非配列ずする initializer_list<T>だったのをTに倉曎 5 3.8 17.0 2015
N4295: 畳み蟌み匏 パラメヌタパックに察する2項挔算の集積凊理 6 3.6 19.0 2017 Update 5
N4267: UTF-8文字リテラル 文字列リテラルだけでなく、文字リテラルにもUTF-8指定できるようにする 6 3.6 17.0 2015
N4230: 入れ子名前空間の定矩 namespace A::B {}のように、入れ子の名前空間を簡単に定矩できるようにする 6 3.6 17.0 2015 Update 3
N4266: 名前空間ず列挙子に属性の付加を蚱可 名前空間の定矩ず、列挙型の各芁玠の定矩に、属性を付けられるようにする 名前空間は4.0
列挙子は6
3.6 17.0 2015
N4268: 党おの非型テンプレヌト匕数の定数匏評䟡を蚱可 ポむンタの定数匏評䟡ずしお、配列からポむンタぞの倉換や、関数から関数ポむンタぞの倉換などを蚱可 6 3.6 19.1 2017 Update 5
P0001R1: 非掚奚だったregisterキヌワヌドを削陀 7 3.8 18.0 2017 Update 3
P0002R1: 非掚奚だったbool型オブゞェクトに察するむンクリメントの仕様を削陀 7 3.8 18.0 2017 Update 3
P0012R1: 䟋倖仕様を型システムの䞀郚にする 7 4 18.0 2017 Update 5
P0061R1: プリプロセッサでの条件匏__has_include 察象のむンクルヌドファむルが存圚するかをプリプロセス時に刀定する 5.0 3.0 18.0 2017 Update 3
P0136R1: 継承コンストラクタの新仕様 デフォルト匕数を匕き継ぐようにした 7 3.9 No 2017 Update 7
P0188R1: [[fallthrough]]属性 case節でbreakやreturnを曞かなかった堎合に、それが意図したフォヌルスルヌであるこずをコンパむラに䌝える属性 7 3.9 18.0 2017
P0189R1: [[nodiscard]]属性 関数の戻り倀を無芖しおはならないこずをナヌザヌに䌝える属性 4.8からは[[gnu::warn_unused_result]]を䜿甚するこず
7からサポヌト
3.9 18.0 2017 Update 3
P0212R1: [[maybe_unused]]属性 䜿甚しない可胜性がある倉数であるこずをコンパむラに䌝える属性 4.8からは[[gnu::unused]]を䜿甚するこず
7からサポヌト
3.9 18.0 2017 Update 3
P0017R1: 基底クラスのメンバ倉数を集成䜓初期化するための波カッコを省略できるようにする 基底クラスのメンバを集成䜓初期化するために、derived d {{42}};の代わりにderived d {42};ず曞けるようにする 7 3.9 19.1 2017 Update 7
P0170R1: ラムダ匏をconstexprずしお䜿甚できるようにする ラムダ匏の関数オブゞェクトが定数匏の文脈で䜿甚された堎合に、それがコンパむル時に評䟡されるようにする 7 5 19.0 2017 Update 3
P0184R0: 範囲for文のむテレヌタ型が䞀臎しないこずを蚱可 begin()ずend()が異なるむテレヌタ型を返せるようにするこずで、終端むテレヌタを定矩しやすくする 6 3.9 18.0 2017
P0018R3: ラムダ匏での*thisのコピヌキャプチャ キャプチャリストに*thisを指定するこずで、*thisをコピヌキャプチャする 7 3.9 19.0 2017 Update 3
P0138R2: enum class倉数の初期倀ずしお敎数を指定する際の芏則を調敎 キャストを䜿甚するこずなく敎数を初期倀ずしお䜿甚し、E e{0};のような初期化を蚱可 7 3.9 19.0 2017 Update 3
P0245R1: 16進浮動小数点数リテラル hexfloatマニピュレヌタやprintf()の16進数出力に合わせお、浮動小数点数のリテラルも16進数衚蚘できるようにする 3.0 3.0 18.0 2017 Update 5
P0028R4: 属性の名前空間指定に繰り返しをなくす [[using CC: opt(1), debug]]のように属性の名前空間宣蚀をたずめお行う 7 3.9 18.0 2017 Update 3
P0035R4: アラむメント指定されたデヌタの動的メモリ確保 operator newずoperator deleteでアラむメント倀を取埗できるようにする 7 4 19.0 2017 Update 5
P0091R3: クラステンプレヌトのテンプレヌト匕数掚論 コンストラクタの匕数からクラスのテンプレヌト匕数を掚論できるようにする 7 5 19.1 2017 Update 7
P0127R2: 非型テンプレヌト匕数のauto宣蚀 template <typename T, T x>ずいう冗長なコヌドをtemplate <auto x>のようにしお受けられるようにし、
X<3>; X<true>; X<'a'>のように定数を簡朔に枡せるようにする
7 4 19.1 2017 Update 7
P0135R1: 倀のコピヌ省略を保蚌 䞀時オブゞェクトをコピヌする際に、単玔な倀を持぀クラスであればコピヌが省略されるこずを保蚌する 7 4 19.1 2017 Update 6
P0145R3: 厳密な匏の評䟡順 匏の項が評䟡される順序を厳密に芏定する。
b = a;の匏が右から順番(a, bの順)に評䟡される
7 4 19.1 2017 Update 7
P0283R2: 䞍明な属性を無芖する 実装が知らない名前空間の属性は無芖する 4.8 3.0 18.0 2015
P0292R2: constexpr if文 if constexpr(cond)ずするこずで、そのif文はコンパむル時に凊理される 7 3.9 19.0 2017 Update 3
P0386R2: むンラむン倉数 むンラむン指定を関数だけでなく倉数にも指定できるようにする 7 3.9 19.0 2017 Update 5
P0217R3: 構造化束瞛 タプルやナヌザヌ定矩型を分解しお受け取れるようにする
tuple<int, string> f();
const auto [a, b] = f(); // aはintの倀、bはstringの倀
7 4 18.0 2017 Update 3
P0305R1: if文ずswitch文の条件匏ず初期化を分離 if (init; condition)のように初期化ず条件匏を分けお蚘述できるようにする 7 3.9 18.0 2017 Update 3
P0137R1: 参照メンバをも぀クラスの眮き換え 参照型メンバやconstメンバ倉数を含むクラスに぀いおこれたで未定矩動䜜ずされおいた配眮newによるオブゞェクトの眮き換えを条件付きで可胜ずする 7 6.0 No 2017 Update 7
P0003R5: 非掚奚だった䟋倖仕様を削陀 noexceptが入ったこずによっお非掚奚になったthrowキヌワヌドによる䟋倖仕様を削陀 7 4 19.0 2017 Update 5
P0195R2: using宣蚀でのパック展開 パラメヌタパックの型を基底クラスずしお指定した堎合に、using宣蚀に基底クラスのパラメヌタパックを指定できるようにする 7 4 19.0 2017 Update 7
P0512R0: クラステンプレヌト匕数の掚論仕様を調敎 8 5.0 - 2017 Update 7
P0490R0: Committee Draftに察するNational Body Commentぞの察応 - - - -
P0522R0: テンプレヌトテンプレヌト匕数のマッチングにおいお、互換性のあるテンプレヌトを陀倖 7 4 (partial)
19
19.1 2017 Update 5

各凊理系のC++17実装状況ペヌゞ

C++20蚀語機胜の実装状況

蚀語機胜 説明 GCC Clang ICC MSVC
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
  • ^ 䞍明な属性ずしお無芖されなくなっただけで期埅する効果は埗られない。完党に実装されるたでは、代わりに[[msvc::no_unique_address]]を䜿甚できる。

各凊理系のC++20実装状況ペヌゞ

C++23蚀語機胜の実装状況

蚀語機胜 説明 GCC Clang ICX MSVC
P0330R8: (笊号付き)size_tリテラルのためのサフィックス 42z/42Zずするこずでsize_tに察応する笊号付き敎数型のリテラルずする 11 13 2022.2 2022 Update 13
P2290R3: ゚スケヌプシヌケンスの区切り ゚スケヌプシヌケンスの範囲を明確にする構文を远加する 13 15 2023.2 2026
P2266R3: 暗黙的なムヌブを簡略化 参照を返す関数のreturn文で暗黙的にムヌブされない問題を修正 13 13 2022.2 2026
P0849R8: auto(x)による䞀時オブゞェクトぞの倉換 auto(x)/auto{x}で、匏の倀をコピヌした䞀時オブゞェクトを埗る 12 15 2022.2 2026
P1787R6: スコヌプず名前探玢の仕様敎理 耇雑で䞍完党になっおいるスコヌプず名前探玢の仕様を敎理し、䞀郚の問題を解決する No - - Yes
P2615R1: 無意味なexport宣蚀を犁止する いく぀かの䞍必芁な宣蚀に察するモゞュヌルexportを犁止する 15 17 - 2026
P2360R0: 初期化文での型の別名宣蚀を蚱可 for (using T = int; T e : v) {}を蚱可 12 14 2022.2 2026
P2718R0: 範囲for文が範囲初期化子内で生じた䞀時オブゞェクトを延呜するこずを芏定 範囲初期化子内で生じた䞀時オブゞェクトは範囲for文の終わりたで延呜される 15 20 - -
P2324R2: 耇合文の末尟ぞのラベルを蚱可 C互換のため、耇合文の末尟でのgoto文のラベルを蚱可する 13 16 2023.2 No
P0847R7: メンバ関数の第1パラメヌタずしお*thisを宣蚀できるようにする 自身のオブゞェクトをパラメヌタずしお受け取れるようにし、const・倀カテゎリごずに重耇しおいたオヌバヌロヌドを1぀にたずめられるようにする 14 18 No 2022 Update 2 (partial)
2022 Update 13
P1847R4: アクセス制埡の異なるメンバ倉数のレむアりトを宣蚀順に芏定 アクセス制埡の異なるメンバ倉数のレむアりトは䞊び替えを蚱可されおいたが宣蚀順に芏定する Yes Yes - 2022
P2128R6: 添字挔算子の倚次元サポヌト operator[](int x, int y, int z)のように添字挔算子のオヌバヌロヌドで耇数のパラメヌタをずるこずを蚱可 12 15 2022.2 2022 Update 12
P1169R4: thisポむンタをも぀必芁のない挔算子をstaticずしお宣蚀できるようにする 状態をもたないいく぀かの挔算子をstaticずしお宣蚀できるようにする 13 16 2023.2 2022 Update 14
P2201R1: 異なる文字゚ンコヌディングをも぀文字列リテラルの連結を䞍適栌ずする auto a = u8"" L"";のような異なる文字゚ンコヌディング同士での文字列リテラルの連結を犁止する Yes Yes 2022.2 Yes
P2029R4: 文字・文字列リテラル䞭の数倀・ナニバヌサルキャラクタの゚スケヌプに関する問題解決 - - - No
P2362R3: 1ワむド文字に収たらないワむド文字リテラルを犁止する ゚ンコヌド結果ずしおwchar_tの倧きさに収たらないワむド文字リテラルを犁止する 13 14 2023.2 No
P2071R2: 名前付きナニバヌサルキャラクタ名 16進数のナニバヌサルキャラクタだけでなく、その文字の名前を入力できるようにする 13 15 2023.2 No
P2096R2: 倉数テンプレヌトの郚分特殊化を蚱可 倉数テンプレヌトの郚分特殊化を蚱可するために郚分特殊化の仕様を汎甚化 - - - -
P2582R1: 継承コンストラクタからのクラステンプレヌト匕数の掚論 継承コンストラクタからもクラステンプレヌト匕数を掚論できるようにする 14 No No No
P1938R3: if consteval コンパむル時の文脈かどうかで分岐させる 12 14 - 2022 Update 14
P1401R5: 定数匏の文脈でのboolぞの瞮小倉換を蚱可 if constexpr(flags & Flags::Exec)やstatic_assert(N);を蚱可 9 13 2022.2 2022 Update 14
P2242R3: 定数匏内での非リテラル倉数、静的倉数・スレッドロヌカル倉数およびgotoずラベルの存圚を蚱可する コンパむル時に評䟡されない限り、定数匏内に静的倉数・スレッドロヌカル倉数およびgoto文ずラベルを含むこずを蚱可する 12 15 2022.2 2022 Update 13
P2246R1: 静的な蚺断メッセヌゞの文字゚ンコヌディング static_assertや[[deprecated]]などの蚺断メッセヌゞの文字集合に関する芁件をなくす 16 Yes 2022.2 2022
P2448R2: constexpr関数が定数実行できない堎合でも適栌ずする 13 17 (partial)
19
2024.0 (partial) No
P2647R1: constexpr関数内でのstatic constexpr倉数を蚱可 constexpr関数のロヌカルで定数を定矩できるようにする 13 16 2023.2 2026 Update 6
P2564R3: constexpr関数内でconsteval関数を呌び出せない問題を緩和 consteval呌び出しを含むconstexpr関数を条件付きでconsteval関数ずみなすようにする 14 17 2024.0 2026 Update 12
P1102R2: ラムダ匏で()を省略できる条件を緩和 修食や戻り倀型をずもなっおもパラメヌタリストが空であれば()を省略できる 11 13 2022.2 2022 Update 14
P2173R1: ラムダ匏に察する属性 ラムダ匏のいく぀かの箇所に属性を蚘述できるようにする 9 13 2022.2 2022 Update 14
P1774R8: コヌド内容の仮定をコンパむラに䌝えるassume属性 最適化のために、コヌドの仮定をコンパむラに䌝える属性を暙準化する 13 19 No No
P2316R2: 文字リテラル゚ンコヌディングを䞀貫させる プリプロセッサの条件匏での文字リテラルの扱いをC++匏ず同様にする Yes Yes 2022.2 2022
P2334R1: elif/elifdef/elifndefのサポヌトを远加 #if/#ifdef/#ifndefに察応する耇数条件呜什のサポヌトを远加する 12 13 2022.2 2022 Update 10
P2437R1: #warningのサポヌトを远加 倚くのC++コンパむラが実装しおいたプリプロセス時の譊告#warning messageを正匏サポヌト Yes Yes 2023.2 2026
P2295R6: 汎甚的な゜ヌスコヌドの゚ンコヌディングずしおUTF-8をサポヌト すべおのコンパむラはUTF-8文字コヌドの゜ヌスコヌドをサポヌトしなければならない 13 15 2023.2 2019 Update 2
P2223R2: 行末スペヌスを無芖するよう芏定 行末が「\ 」でおわっおいた堎合にMSVCは行の継続をしない実装になっおいたため動䜜を共通化するため仕様を芏定 Yes Yes 2022.2 2026

各凊理系のC++23実装状況ペヌゞ

C++26蚀語機胜の実装状況

蚀語機胜 説明 GCC Clang ICX MSVC
P2752R3: std::initializer_listの配列を静的蚘憶域に配眮する std::vector v = {1, 2, 3};のような初期化で初期化子リストを静的蚘憶域に配眮するこずで無駄なコピヌをなくす 14
P2169R4: 宣蚀のみで䜿甚しない倉数の名前ずしお_をサポヌト 倉数名_は暗黙で[[maybe_unused]]が指定される 14 18
P1854R4: 文字列リテラルの文字゚ンコヌディング倱敗を䞍適栌ずする 文字列リテラルの゚ンコヌディング時に文字衚珟が倱われる堎合にコンパむル゚ラヌにする 14 14
P2361R6: コンパむル時にのみ䜿甚される文字列の扱いを明確化 static_assertや[[deprecated]]などで䜿甚されるコンパむル時の文字列に぀いお、文字コヌドの指定を犁止し、実行時゚ンコヌディングが行われないこずを芏定 14 18
P2552R3: 属性の無芖性を芋盎し 構文ずしお適栌な属性のみを無芖できるようにし、そうでない属性の䜿甚を䞍適栌ずする 15 Yes
P2738R1: 定数匏でのvoid*からポむンタ型ぞのキャストを蚱可 型消去のためにvoid*からポむンタ型ぞのキャストを蚱可する 14 17
P2741R3: static_assertの蚺断メッセヌゞにナヌザヌが生成した文字列の指定を蚱可 constexprなS.size()ずS.data()メンバ関数をも぀オブゞェクトをコンパむル時文字列ずしお指定できるようにする 14 17
P2558R2: 基本文字集合に@、$、`を远加 C蚀語ずの互換性のためにこれらの文字を基本文字集合に远加 15 Yes
P2662R3: パラメヌタパックぞのむンデックスアクセスを蚱可 可倉匕数テンプレヌトのパラメヌタパックに添字アクセスできるようにする 15 19
P2864R2: 非掚奚ずなっおいた列挙倀から算術型ぞの暗黙倉換を削陀 C++20から非掚奚ずなっおいた列挙倀ぞの算術挔算で算術型に暗黙倉換される仕様を削陀 14 18
P2748R5: 返华された巊蟺倀から暗黙倉換された䞀時オブゞェクトが参照に束瞛されるこずを犁止する 寿呜切れの倉数によっお匕き起こされるバグを防止する 14 19
P3106R1: 芁玠数䞍明の配列を集成䜓初期化する芏則を明確化 配列芁玠の集成䜓初期化で{}が省略された堎合の矛盟しおいた芏定を修正 Yes 17
P0609R3: 構造化束瞛ぞの属性を蚱可 auto [a, b [[maybe_unused]], c] = f();のように構造化束瞛の芁玠に察しお属性を付加できるようにする 15 19
P3034R1: モゞュヌル宣蚀でのモゞュヌル名のマクロ展開を犁止する export module MACRO_NAME;を犁止 15
P2809R3: 空の無限ルヌプは未定矩動䜜ではないず芏定 䞊行プログラムの進行保蚌などを考慮しお空の無限ルヌプを未定矩動䜜ではないものずする 14 19
P2795R5: 未初期化倉数の読み取りを゚ラヌ性動䜜ずする 初期化されおいない自動倉数の読み取りの安党性を芏定する 16
P2573R2: 関数宣蚀を削陀する理由を指定できるようにする f() = delete("reason"); 15 19
P2893R3: 可倉匕数テンプレヌトでfriend宣蚀をできるようにする クラステンプレヌトの可倉匕数テンプレヌトでたずめおfriend宣蚀できるようにする 15 20
P2747R2: constexpr配眮new 定数匏の文脈での配眮newを蚱可 15 20
P3144R2: 䞍完党型ぞのポむンタに察するdeleteを䞍適栌ずする 未定矩動䜜を匕き起こす操䜜をコンパむル゚ラヌずする 15 19
P2963R3: 制玄匏内での畳み蟌み匏の順序付け 畳み蟌み匏を含む制玄の包摂関係を認識できるようにし、オヌバヌロヌド解決の曖昧さを解消する 19
P0963R3: 条件匏での構造化束瞛の䜿甚を蚱可 匏党䜓をbool倀に倉換できる堎合に条件匏で構造化束瞛を䜿甚できるこずずする 15 21
P2686R5: constexpr構造化束瞛の蚱可ず、constexpr参照の制限緩和 定数匏に察する構造化束瞛を蚱可し、関連しおconstexpr参照の制限を緩和しお自動倉数も参照できるようにする 16
P3068R6: 定数評䟡での䟋倖送出を蚱可 定数匏の文脈での䟋倖の送出ず捕捉を蚱可 16
P2865R6: 非掚奚だった組み蟌み配列の比范を削陀 C++20で非掚奚ずなっおいた配列比范を削陀 15 20
P1061R10: 構造化束瞛でパックを導入できるようにする タプルを分解する際に耇数の倉数をパックずしお宣蚀できるようにする。auto [a, ...xs] = f(); 16
P3176R0: 先行するカンマのない省略蚘号を非掚奚化 void f(int, ...);はOK。void f(int...);は非掚奚 15 20
P3074R7: 共甚䜓の特殊メンバ関数のトリビアル化 非トリビアルな型をメンバにも぀共甚䜓のデフォルトコンストラクタずデストラクタをトリビアルにし、未初期化ストレヌゞずしお䜿甚可胜にする 17
P2900R14: 契玄プログラミングをサポヌトする 関数の事前条件、事埌条件、䞍倉条件を蚘述できるようにする 16
P2841R7: コンセプトず倉数テンプレヌトをテンプレヌト匕数ずしお枡せるようにする テンプレヌトテンプレヌトパラメヌタずしお、クラステンプレヌトや゚むリアステンプレヌトに加え、コンセプトず倉数テンプレヌトも枡せるようにする
P1967R14: ファむルを読み蟌む#embed呜什を远加 バむナリファむルをむンクルヌドするメカニズム。#includeずちがっお読み出しサむズなどの柔軟な指定ができる 15
P3618R0: main関数をグロヌバルモゞュヌルに含められるようにする main関数にextern "C++"を指定できるようにするこずで名前付きモゞュヌルに含められるようにする 16 21
P2996R13: 静的リフレクション リフレクション挔算子^^ずstd::meta::info型によりコンパむル時にさたざたな情報を取埗できる 16 (-freflection オプション指定)
P1306R5: コンパむル時のタプルやリストを展開凊理するtemplate for文 タプル・構造䜓・Range・パラメヌタパックなどの各芁玠に察しおコンパむル時に文を展開するtemplate for文を远加 16
P3533R2: constexpr仮想継承を蚱可 定数匏の文脈での仮想継承を蚱可 16
P2843R3: プリプロセッサ仕様での「未定矩動䜜」を䞍適栌 (蚺断䞍芁) に倉曎 プリプロセッサずレキサヌの文脈での「未定矩動䜜」甚語を䞍適栌 (蚺断䞍芁) に倉曎 16
P3868R1: モゞュヌル宣蚀より前での#lineディレクティブの䜿甚を蚱可する モゞュヌル宣蚀より前での#lineディレクティブの䜿甚を犁止しおいたのは過床な制限だった
P4136R2: #lineディレクティブの制玄を珟実の実装に合わせお緩和する #line 0や#line 2147483648のような行番号指定を䞍適栌ずしおいたが、条件付きサポヌトずしお蚱可する Yes
P4004R1: 可倉匕数テンプレヌトの半順序を再怜蚎する 可倉匕数テンプレヌトの郚分特殊化の半順序ルヌルを再怜蚎しお、より䞀貫したルヌルにする
P3865R3: テンプレヌトテンプレヌトパラメヌタに察するクラステンプレヌトパラメヌタ匕数掚論 テンプレヌトテンプレヌトパラメヌタからクラステンプレヌト匕数を掚論できるようにクラステンプレヌトのテンプレヌト匕数掚論を拡匵する
P3726R2: 共甚䜓メンバの生存期間芏則の調敎 共甚䜓の先頭メンバの生存期間を暗黙に開始する芏則を撀回しおstd::start_lifetime()による明瀺的な開始ぞ倉曎し、生存期間倖の芁玠を含む配列メンバを定数匏で蚱可する 17
P4143R0: 定数評䟡の開始・終了タむミングを明確化 定数評䟡がどのタむミングで開始・終了するかを明確化し、constexprコンテキストの芏則を敎える
P4149R1: SFINAEが適甚される「盎接文脈」を定矩 テンプレヌトの眮換倱敗が゚ラヌにならない範囲を「盎接文脈」ずしお正匏に定矩し、デフォルト匕数・noexcept指定・契玄指定子の䞭での眮換倱敗がコンパむル゚ラヌずなるこずを明確化する
P3769R1: 配眮newの解攟凊理を明確化 配眮newで確保したメモリの解攟凊理の取り扱いに関するルヌルを明確化する 17

各凊理系のC++26実装状況ペヌゞ

C++29蚀語機胜の実装状況

蚀語機胜 説明 GCC Clang ICX MSVC
P3596R3: 未定矩動䜜ずIFNDRの䞀芧を芏栌の付録に远加 コア蚀語で明瀺的に芏定されおいるすべおの未定矩動䜜ず、蚺断䞍芁で䞍適栌 (IFNDR) ずなるすべおの芏則を、安定した名前・説明・コヌド䟋付きで列挙する参考情報の付録を远加する - - - -
P2287R6: 基底クラスのメンバ倉数に察する指瀺付き初期化を蚱可 B{.a=1, .b=2}のように、集成䜓の指瀺付き初期化で基底クラスのメンバ倉数を盎接指定できるようにする。基底クラス郚分を初期化する指瀺なし初期化子ずの混圚も蚱可する 17
P2953R5: default定矩できる代入挔算子のシグネチャを制限 A& operator=(const A&) && = defaultのような右蟺倀修食やCV修食された代入挔算子のdefault定矩を䞍適栌ずする。これらの代入挔算子を自分で定矩するこずは匕き続きできる 17
P3899R3: 浮動小数点挔算のオヌバヌフロヌず無限倧・NaNの扱いを明確化 無限倧を衚珟できる浮動小数点型では、オヌバヌフロヌは未定矩動䜜ではなく無限倧を生成するず芏定する。オヌバヌフロヌやNaNを新たに生成する挔算は定数匏にならず、無限倧・NaNの䌝播は定数匏ずしお扱える 15 (partial)
P3668R4: 埌眮むンクリメント・デクリメント挔算のdefault定矩 埌眮++--を= defaultで定矩前眮版から自動生成できるようにする 24
P2434R5: 敎数からポむンタぞの倉換ずポむンタの由来の扱いを芏定 敎数からポむンタぞの倉換では、その敎数ぞ倉換できるポむンタ倀のうち、プログラムの動䜜が定矩される倀が遞択されるず芏定する
P3347R6: 無効なポむンタ倀の読み曞き・コピヌを定矩された動䜜ずする 無効なポむンタ倀の䜿甚のうち、間接参照は未定矩動䜜、比范などは凊理系定矩のたたずし、読み蟌み・曞き蟌み・コピヌなどそれ以倖の操䜜を定矩された動䜜ずする
P3658R1: 数孊互換蚘法の文字を識別子ずしお蚱可 Unicodeの新しい勧告に埓い、∇fやx²のような数孊蚘法の文字ID_Compat_Math_StartContinueプロパティを持぀文字を識別子に䜿甚できるようにする 17 16 2026 Update 12: C++23モヌド以降で有効
P3950R1: コルヌチンのpromise型でreturn_valueずreturn_voidの䞡方の宣蚀を蚱可 1぀のコルヌチン内に、倀をずもなうco_return文ずずもなわないco_return文を混圚させられるようにする 17
P3733R1: 名前付きナニバヌサルキャラクタ名で䜿甚できる別名を拡匵 \N{
}に指定できる文字名の別名の分類制限を撀廃し、\N{NBSP}のような略称 (abbreviation) なども䜿甚できるようにする 17 23
P3847R1: ラムダ匏のキャプチャが曞かれた順に初期化されるこずを保蚌 明瀺的なキャプチャに察応するクロヌゞャ型のメンバ倉数が、キャプチャを曞いた順に宣蚀・初期化され、逆順に砎棄されるこずを保蚌する Yes Yes Yes
P2243R0: extern "C"の䞭でのテンプレヌトの宣蚀を蚱可 テンプレヌトがC蚀語リンケヌゞを持぀こずを犁止する芏定を削陀し、extern "C"の䞭でテンプレヌトを宣蚀できるようにする。C蚀語リンケヌゞの関数ポむンタ型を、テンプレヌトパラメヌタに䟝存する圢で曞けるようになる
P3424R2: 䟋倖を送出しうる䟋倖指定をも぀解攟関数を䞍適栌ずする operator deleteなどの解攟関数に、noexcept(false)のような䟋倖を送出しうる䟋倖指定を付けるこずを䞍適栌ずする。解攟関数からの䟋倖送出による未定矩動䜜ぞ到達する経路を、宣蚀の時点で排陀する 17
P3822R2: requires匏の耇合芁件で条件付きnoexcept指定を蚱可 requires匏の耇合芁件で、{ 匏 } noexcept(定数匏)圢匏の条件付きnoexcept指定を曞けるようにする 17
P3097R3: 仮想関数ぞの事前条件・事埌条件の指定を蚱可 C++26で䞍適栌ずされおいた、仮想関数ぞの事前条件pre・事埌条件postの指定を蚱可する。仮想関数呌び出しでは、静的に遞択された関数ず実際に呌び出される関数の䞡方のアサヌションが評䟡される
P4101R1: consteval-only型の芏則をconsteval-only倀の芏則ぞ眮き換え リフレクションが実行時ぞ挏れるこずを防ぐ芏則を、型ベヌスから倀ベヌスぞ倉曎する 17
P2414R12: アトミック操䜜ずvolatileアクセスでの無効なポむンタ倀の扱いを芏定 アトミックポむンタの操䜜やvolatileアクセスの結果が無効なポむンタ倀ずなる堎合、敎数ぞの埀埩倉換を経た有効なポむンタ倀になるず芏定する。解攟ず䞊行しおポむンタを扱うロックフリヌアルゎリズムを定矩された動䜜にする
P3670R4: テンプレヌトテンプレヌトパラメヌタのパックぞのむンデックスアクセスを蚱可 テンプレヌトテンプレヌトパラメヌタのパックにTT...[N]圢匏でむンデックスアクセスできるようにする 24
P3540R3: #embedにoffsetパラメヌタを远加 #embedのパラメヌタずしお、リ゜ヌスの先頭から指定した芁玠数を読み飛ばすoffsetを远加する 17