Namespaces
Variants

C++ compiler support

From cppreference.net


以下の表は、新しいC++機能に対するコンパイラのサポート状況を示しています。これには標準への承認済み改訂、および様々な技術仕様が含まれます:

目次

注記

* - 星印が付いたセルにマウスを重ねると * 追加のポップアップ注記が表示されます。
DR nn - 「DR」に続く数字 nn は、欠陥報告書が適用される対象C++リビジョンを示します(例: DR20 → C++20)。

(注:指定されたテキストブロックには翻訳対象の自然言語テキストが含まれていないため、HTML構造のみを保持したまま出力しています)

C++26 機能

C++26/2cドラフト標準が進化するにつれて、このリストは変更される可能性があることに注意してください。

C++26 コア言語機能

翻訳内容: - "FTM" → "機能テストマクロ" - "Feature-testing macro" → "機能テストマクロ" 注意事項: - HTMLタグ、属性は一切翻訳せず保持 - ` `, `
`, ``タグ内のテキストは翻訳対象外(今回は該当なし)
- C++固有の用語(delete, "reason"など)は翻訳せず保持
- 元のフォーマットを完全に維持
翻訳内容: - "exceptions" → "例外処理" - HTMLタグ、属性、 タグ内のconstexpr、リンクテキスト[1],[2]、FTM、P3068R6は翻訳せず保持 - 書式設定と構造は完全に維持 翻訳内容: - "Trivial unions" → "自明な共用体"(C++の専門用語として「trivial union」は「自明な共用体」と訳されます) - その他のHTMLタグ、属性、コード関連のテキストはすべて保持されています - FTM(Feature Testing Macro)やP3074R7などのC++固有の用語は翻訳していません
C++26 機能

提案文書

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (旧 PGI)*
Nvidia nvcc
Cray
DR98: 字句解析からの未定義動作の除去 P2621R3 はい 3.3 16.0.0*
DR98: エンコード不可能な文字列リテラルを不正形式とする P1854R4 14 14 16.0.0*
未評価文字列 P2361R6 14 17 (部分的)*
18
16.0.0*
基本文字セットへの @ , $ , および ` の追加 基本文字セット P2558R2 15 はい 16.0.0*
constexpr void*からのキャスト void * ( FTM ) * P2738R1 14 17
DR20: 標準属性の無視可能性について P2552R3 15 はい
DR11: 波括弧初期化子の静的ストレージ P2752R3 14
ユーザー生成 static_assert メッセージ  ( FTM ) * P2741R3 14 17
名前のないプレースホルダ変数 ( FTM ) * P2169R4 14 18
パックインデックス ( FTM ) * P2662R3 15 19
非推奨となった列挙型の算術変換の削除 P2864R2 14 18
DR11/20: テンプレートパラメータ初期化 P2308R1 9 18
返された参照を 一時オブジェクト にバインドすることを禁止 P2748R5 14 19
構造化バインディングの 属性 ( FTM ) * P0609R3 15 19
未初期化読み取りの 誤った動作 [[ indeterminate ]] 属性 P2795R5
= delete ( "reason" ) ; ( 機能テストマクロ ) * P2573R2 15 19
可変長 friend ( FTM ) * P2893R3 15 20
DR98: 中括弧省略の規則を明確化 aggregate initialization P3106R1 はい 17
DR20: モジュール宣言をマクロとして許可しない P3034R1 15
DR11: 自明な無限ループは未定義動作ではない P2809R3 14 19
constexpr プレースメント new  ( FTM ) * ( FTM ) * P2747R2 15 20
構造化バインディング 宣言を条件として使用  ( FTM ) * P0963R3 15 6 (partial)*
21
制約 における fold expressions の順序付け ( FTM ) * P2963R3 19
不完全型へのポインタの delete は不適格であるべき P3144R2 15 19 6.7
構造化バインディング パック を導入できる ( FTM ) * P1061R10 21
constexpr 構造化バインディング および constexpr 変数への参照 P2686R5 6.7
constexpr 例外処理 : [1] , [2] ( FTM ) * P3068R6
Oxford variadic comma P3176R1 15 20
非推奨となった配列比較の削除 P2865R6 15 20
#embed ( FTM ) * P1967R14 15 19 *
コンセプトおよび変数テンプレートのテンプレートパラメータ  ( FTM ) * P2841R7
自明な再配置可能性 ( FTM ) * P2786R13 21 *
自明な共用体  ( FTM ) * P3074R7
観測可能チェックポイント P1494R5
コントラクト ( FTM ) * P2900R14


C++26 機能


提案文書
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (旧 PGI)*
Nvidia nvcc
Cray

C++26 ライブラリ機能

翻訳内容: - "Type checking format args" → "フォーマット引数の型チェック" - HTMLタグ、属性、
タグ内のテキストは翻訳せず保持
- C++固有の用語(FTM、__cpp_lib_format、P2757R3など)は翻訳せず保持
- 元のフォーマットと構造を完全に維持
翻訳のポイント: - HTMLタグ、属性、
タグ内のテキストは翻訳せず保持
- C++固有の用語(FTM、P2510R3、__cpp_lib_formatなど)は翻訳せず保持
- 「Formatting pointers」を「ポインタのフォーマット」と翻訳
- 「Feature-testing macro」を「機能テストマクロ」と翻訳
- 「Treated as a defect report against C++20」を「C++20に対する欠陥報告として扱われる」と翻訳
- 元のフォーマットと構造を完全に保持
HTMLタグ、属性、C++固有の用語(`std::is_within_lifetime`、`FTM`、`__cpp_lib_is_within_lifetime`、`P2641R4`)は翻訳せず、元のフォーマットを保持しています。 翻訳内容: - `type-erased callable reference` → `型消去された呼び出し可能参照` - HTMLタグ、属性、 内のテキスト、C++固有の用語(std::function_ref、FTM、__cpp_lib_function_refなど)は翻訳せず保持 - 書式設定と構造は完全に維持 **注記**: このHTMLフラグメントには翻訳対象となる自然言語テキストが含まれていません。すべてのテキスト要素は以下のいずれかに該当します: - HTMLタグと属性(翻訳対象外) - C++固有の用語(`std::copyable_function`、`FTM`、`__cpp_lib_copyable_function` - 翻訳対象外) - コード関連の識別子(翻訳対象外) - 数値と技術文書参照(P2548R6 - 翻訳対象外) したがって、元のHTML構造と内容はそのまま保持されます。 翻訳内容: - "Freestanding language: Optional" → "フリースタンディング言語: オプション" - HTMLタグ、属性、 タグ内の`::operator new`、 タグ内の"N/A"は翻訳せず保持 - 書式設定と構造は完全に維持 翻訳のポイント: - `assert()` マクロはC++の専門用語なので翻訳せず保持 - HTMLタグ、属性、リンク、スタイルは完全に保持 - 「Making ... macro user friendly」を「...マクロのユーザーフレンドリー化」と自然な日本語に翻訳 - 文法的に自然な日本語の語順に調整 HTMLタグ、属性、C++固有の用語(`std::span::at()`、`FTM`、`P2821R5`、`__cpp_lib_span`など)は翻訳せず、元のフォーマットを保持しています。数値やバージョン情報もそのまま維持されています。 翻訳のポイント: - HTMLタグ、属性、 内のテキストは翻訳せず保持 - C++固有の用語(std::strtok、FTM、__cpp_lib_freestanding_cstringなど)は翻訳せず保持 - 「Freestanding: removing」を「フリースタンディング: ...の削除」と翻訳 - 技術文書としての正確性と専門性を維持 翻訳内容: - "Padded mdspan layouts" → "パディングされた mdspan レイアウト" - "FTM" は翻訳せず(C++固有の用語として保持) - "Feature-testing macro" → "機能テストマクロ" - HTMLタグ、属性、 内のテキスト、P2642R6などの識別子は翻訳せず - 全体的なフォーマットと構造を保持 翻訳内容: - `Feature-testing macro:` → `機能テストマクロ:` - C++固有の用語(`std::formatter`, `std::filesystem::path`, `FTM`, `__cpp_lib_format_path`, `P2845R8`)は翻訳せず保持 - HTMLタグ、属性、コード内のテキストは完全に保持 **日本語訳:** **翻訳の説明:** - "Removing" → "削除"(C++標準からの機能削除を表す技術文脈に適した訳) - `std::wstring_convert` はC++固有の用語のため非翻訳 - HTMLタグ、属性、` `タグ内のテキストは完全に保持 - 数値"19"はそのまま保持 - 表のセルのスタイル属性は完全に保持 翻訳のポイント: - HTMLタグ、属性、 内のテキストは翻訳せず保持 - C++固有の用語「std::ignore」は翻訳せず保持 - 文書番号「P2968R2」は翻訳せず保持 - 数値(バージョン番号)は翻訳せず保持 - 「Formal specification of the type of std::ignore」を「std::ignoreの型の正式な仕様」と正確に翻訳 - 表の構造と書式を完全に保持 **注記**: このHTMLコードには翻訳すべきテキストがほとんど含まれていません。以下の要素のみが翻訳対象となります: - `title="cpp/ranges/cache latest view"` → `title="cpp/ranges/cache_latest_view"` - `title="cpp/feature test"` → `title="cpp/feature_test"` - `title="Feature-testing macro: __cpp_lib_ranges_cache_latest = 202411L"` → `title="機能テストマクロ: __cpp_lib_ranges_cache_latest = 202411L"` ただし、元のタイトルテキストはC++の専門用語を含んでいるため、翻訳せずにそのまま保持することを推奨します。 HTMLタグ、属性、C++固有の用語(`std::atomic_ref::address()`、`FTM`、`P2835R7`、`__cpp_lib_atomic_ref`)は翻訳せず、元のフォーマットを保持しています。 翻訳内容: - "data-parallel types" → "データ並列型" - HTMLタグ、属性、 内のテキスト(<simd>)、FTM、文書番号(P1928R15など)は翻訳せず保持 - 書式と構造は完全に維持 **注記**: このHTMLフラグメントには翻訳すべき自然言語テキストが含まれていません。以下の要素は翻訳対象外です: - HTMLタグと属性 - ` `, `
`, ``タグ内のテキスト(該当なし)
- C++固有の用語(`std::polymorphic`, `FTM`, `__cpp_lib_polymorphic`など)
- 技術文書の参照(`P3019R14`)
すべてのテキストはC++技術文書の要素であり、翻訳指示に従って原文のまま保持されています。
C++26 機能

提案文書

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
<charconv> 関数の成功・失敗のテスト  ( FTM ) * P2497R0 14 18 16.0.0*
std::text_encoding : テキストエンコーディングの識別  ( FTM ) * P1885R12
P2862R1
14
std::to_string および std::to_wstring の算術オーバーロードは std::format を使用する ( FTM ) * P2587R3 14
フォーマット引数の型チェック  ( FTM ) * P2757R3 15
ポインタのフォーマット  ( FTM ) * P2510R3 14 * 17 * 19.40* *
ハッシュ サポート for std::chrono 値クラス  ( FTM ) * P2592R3
<rcu> : Read-Copy Update ( FTM ) * P2545R4
<hazard_pointer> : ハザードポインタ ( FTM ) * P2530R3
ADL-proof std::projected P2538R1 14 * 18 * 19.38* * 16.0.0*
constexpr 安定ソート ( FTM ) * P2562R1 15 21
メンバー関数 std::basic_format_arg::visit() ( FTM ) * P2637R3 15 19
メンバー関数 std::variant::visit() ( FTM ) * P2637R3 15 18
std::is_within_lifetime ( FTM ) * P2641R4
連想コンテナに残りの異種オーバーロードを追加  ( FTM ) * P2363R5
順序付けされていない連想コンテナでの std::weak_ptr のキーとしての使用を有効化  ( FTM ) * P1901R2
ファイルストリームにおけるネイティブハンドル  ( FTM ) * P1759R6 14 18 16.0.0*
文字列ストリームと std::string_view の連携 ( FTM ) * P2495R3 19
std::bitset std::string_view のインターフェース連携 ( FTM ) * P2697R1 18 16.0.0*
<cmath> および <complex> のさらなる constexpr 化 ( FTM ) * ( FTM ) * P1383R2 4.6 (部分的な実装)*
比率に新しい2022 SI接頭辞を追加: std::quecto , std::ronto , std::ronna , および std::quetta ( FTM ) * P2734R0 14 17 *
std::function_ref : 型消去された呼び出し可能参照  ( FTM ) * P0792R14
std::copyable_function ( FTM ) * P2548R6 16
std::bind_front , std::bind_back および std::not_fn NTTP呼び出し可能オブジェクトへの対応  ( FTM ) * ( FTM ) * ( FTM ) * P2714R1
std::submdspan() ( 機能テストマクロ ) * P2630R4
P3355R1
フリースタンディング言語: オプション ::operator new P2013R5 N/A
フリースタンディング std::char_traits , std::errc および以下の機能: <charconv> , <cstdlib> , <cstring> , <cwchar> ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2338R4 N/A
追加のフリースタンディング機能  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2198R7 N/A
飽和演算 ( FTM ) * P0543R3 14 18 16.0.0*
<debugging> : デバッグサポート ( FTM ) * P2546R5
P2810R4
<linalg> : BLASに基づくフリー関数線形代数インターフェース ( FTM ) * P1673R13
P3050R2
P3222R0
assert() マクロのユーザーフレンドリー化 P2264R7
ランタイムフォーマット文字列  ( FTM ) * P2918R2 14 18 16.0.0*
std::span 初期化リストに対する  ( FTM ) * P2447R6 15 18 16.0.0*
std::span::at() ( FTM ) * P2821R5 14 18 16.0.0*
std::complex にタプルプロトコルを追加 ( FTM ) * P2819R2 15 19
std::generate_canonical の新しい仕様 P0952R2 19.42*
非推奨となったtypedefの削除 std::allocator::is_always_equal P2868R3 15 18 16.0.0*
引数を取らない std::basic_string::reserve() の関数オーバーロードの削除 P2870R3 18 16.0.0*
非推奨となったUnicode変換ファセットの削除 ( <codecvt> ) P2871R3 18 16.0.0*
フリースタンディング: std::strtok の削除 ( FTM ) * P2937R0 14 19.40*
フリースタンディングライブラリ: 部分クラス  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2407R5 14 19.42*
フリースタンディングライブラリ: std::inout , std::expected , std::span ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2833R2 14 19.42*
DR23: std::basic_const_iterator はその基となる型の変換可能性に従うべきである  ( FTM ) * P2836R1
P2950R0
14 19.40*
DR20: std::make_format_args は転送参照の代わりに左辺値参照のみを受け入れるようになりました P2905R2 14 18 19.40* 16.0.0*
DR20: コードユニットの整数としてのフォーマットを修正  ( FTM ) * P2909R4 13.3 18 19.40* 16.0.0*
views::concat ( 機能テストマクロ ) * P2542R8 15
文字列 string views の連結 ( FTM ) * P2591R5 15 19
アルゴリズムのリスト初期化を有効化 algorithms ( FTM ) * P2248R8
P3217R0
15
std::ranges::generate_random ( FTM ) * P1068R11
比較演算子 std::reference_wrapper に対する実装、および std::pair std::tuple std::optional std::variant の比較演算子に対する制約 ( FTM ) * ( FTM ) * P2944R3 14 19 (部分的な実装) *
パディングされた mdspan レイアウト  ( FTM ) * P2642R6
整数定数を使用した std::span および std::mdspan の新しいCTAD P3029R1 19
アトミックな最大値と最小値  ( FTM ) * P0493R5
std::formatter<std::filesystem::path> ( FTM ) * P2845R8
std::println()による空白行の出力 std::println() ( FTM ) * P3142R0 14 * 19 * 19.41* *
非推奨解除 std::polymorphic_allocator::destroy P2875R4 15 19.41*
非推奨となったstrstreamsの削除 P2867R2 19
非推奨となった std::shared_ptr のアトミックアクセスAPIの削除 P2869R4
Removing std::wstring_convert P2872R3 19
削除 std::wstring_convert P2872R3 19
DR23: 効率的な実装を許可する std::print ( FTM ) * P3107R5
P3235R3
19.43*
実行制御ライブラリ ( FTM ) * P2300R10
P3396R0
std::inplace_vector : 固定容量を持つ動的リサイズ可能なベクター  ( FTM ) * P0843R14
std::philox_engine : カウンターベース乱数エンジン  ( FTM ) * P2075R6
std::optional 範囲サポート  ( FTM ) * P3168R2
std::is_virtual_base_of : 仮想基底クラスを検出するための型特性  ( FTM ) * P2985R0 15 20
std::dims 用の std::mdspan ( FTM ) * P2389R2 19
DR11: std::ignore の型の正式な仕様 P2968R2 15 19 19.42*
DR20: 間接的に呼び出し可能なコンセプトから共通参照要件を削除  ( FTM ) * P2997R1 15 19 19.42*
std::is_trivial および std::is_trivial_v の非推奨化 P3247R2 15 21
DR20: アルゴリズム関数オブジェクト P3136R1 はい 14 19.39* 14.0.3*
std::ranges::cache_latest_view ( FTM ) * P3138R5 15
std::expected の等価演算子を制約 等価演算子 ( FTM ) * P3379R0 15
std::aligned_accessor : std::mdspan アクセサでポインタのオーバーアライメントを表現する  ( FTM ) * P2897R7 21
std::is_sufficiently_aligned : ポインタのアライメント事前条件をチェックする  ( FTM ) * P2897R7 21
std::atomic_ref::address() ( FTM ) * P2835R7
DR11/20: std::atomic および std::atomic_ref におけるcv修飾型 P3323R1 19.44*
constexpr std::atomic および std::atomic_ref ( FTM ) * P3309R3
constexpr メモリアルゴリズムの 特殊化されたメモリアルゴリズム に対する FTM ) * P3508R0
P3369R0
15
<stdbit.h> および <stdckdint.h> P3370R1 15
<simd> : データ並列型 ( FTM ) * ( FTM ) * P1928R15
P3430R3
P3441R2
P3287R3
P2663R7
P2933R4
実行環境を作成するための ユーティリティ P3325R5
constexpr 例外型に対するconstexpr指定、例: std::bad_alloc , std::bad_cast など  ( FTM ) * P3068R6
P3378R2
自明な再配置可能性の特性と操作  ( FTM ) * P2786R13
Defangおよび非推奨化 std::memory_order::consume P3475R1
std::monostate <utility> に配置 P0472R3 15 21 19.50*
std::indirect ( FTM ) * P3019R14
std::polymorphic ( FTM ) * P3019R14
コンテナとコンテナアダプタに対する追加の constexpr サポート:

std::deque , std::flat_map , std::flat_multimap , std::flat_set , std::flat_multiset , std::forward_list , std::list , std::map , std::multimap , std::queue , std::priority_queue , std::set , std::multiset , std::stack , std::unordered_map , std::unordered_multimap , std::unordered_set , および std::unordered_multiset
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) *

P3372R3
constexpr std::inplace_vector 非トリビアル型用  ( FTM ) * P3074R7
std::ranges::to_input_view ( FTM ) * P3137R3 15
std::ranges::approximately_sized_range および std::ranges::reserve_hint ( FTM ) * P2846R6
<hive> : 削除された要素のメモリ位置を再利用するバケットベースのコンテナ  ( FTM ) * P0447R28
<contracts> : 契約違反処理サポート  ( FTM ) * P2900R14
標準ライブラリ強化  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P3471R4 15 (部分的な実装)* 19.44* (部分的な実装)*
フリースタンディングライブラリ: <algorithm> , <numeric> , <random> , ( <execution> , <memory> )
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) *
P2976R1
DR20: 連続イテレータからポインタへの変換 P3349R0 15


C++26 機能


提案文書
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

C++23 機能

C++23 コア言語機能

翻訳内容: - `Feature-testing macro:` → `機能テストマクロ:` - `if consteval` と `FTM` はC++固有の用語のため翻訳せず - HTMLタグ、属性、コード内のテキストはすべて保持 - 数値、バージョン情報、リンクテキストは変更なし 翻訳内容: - "FTM" → "機能テストマクロ" (Feature-testing macro) - "Feature-testing macro:" → "機能テストマクロ:" - C++コード部分 (`static operator ()`) は翻訳せず保持 - HTMLタグ、属性、数値、バージョン情報はそのまま保持 - タイトル属性内のテキストも適切に翻訳 翻訳内容: - "Attribute" → "属性" - HTMLタグ、属性、 タグ内のテキスト、C++固有の用語("assume")は翻訳せず保持 - 書式設定と構造は完全に維持 翻訳内容: - "Relax requirements on wchar_t to match existing practices" → "既存の実装に合わせてwchar_tの要件を緩和" - "Yes" → "はい" - "N/A" → "該当なし" HTMLタグ、属性、 タグ内の`wchar_t`、その他のC++専門用語は翻訳せず、元のフォーマットを保持しています。
C++23 機能

提案文書

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (旧 PGI)*
Nvidia nvcc
Cray
リテラルサフィックス for (signed) size_t ( FTM ) * P0330R8 11 13 19.43* 13.1.6* 6.5 2022.2 23.9
lambda式 における () の記述をより任意に P1102R2 11 13 19.44* 13.1.6* 6.3 2022.2 22.5
if consteval ( FTM ) * P1938R3 12 14 19.44* 14.0.0* 6.3 2022.2 24.1
ガベージコレクションサポートの削除 P2186R2 12 N/A 19.30* N/A N/A
static_assert および constexpr if における縮小コンテキスト変換 P1401R5 9 13 (partial)*
14
14.0.0* 2022.2 20.7
行継続前の空白文字のトリミング P2223R2 Yes Yes Yes 6.7 2022.2 Yes
宣言順序レイアウトを強制 P1847R4 はい はい はい はい 2022.2 はい
混合ワイド文字列リテラルの削除 concatenation P2201R1 はい はい はい はい はい はい はい
明示的オブジェクトメンバー関数 (thisの推論 this )  ( FTM ) * P0847R7 14 18
19*
19.32*
(部分的な実装)*
19.43*
6.3 22.5
auto(x) および auto{x} ( FTM ) * P0849R8 12 15 14.0.3* 6.4 2022.2 23.3
#elifdef および #elifndef P2334R1 12 13 19.40* 13.1.6* 6.5 2022.2 23.9
constexpr関数内の非リテラル変数(およびラベルとgoto) ( constexpr )  ( FTM ) * P2242R3 12 15 19.43* 14.0.3* 6.3 2022.2 22.5
一貫した文字リテラルエンコーディング P2316R2 はい はい 19.30* はい はい 2022.2 はい
文字セットとエンコーディング P2314R4 10 はい はい はい 2022.2 はい
init-statement( for ループ の)を拡張して alias-declaration を許可 P2360R0 12 14 14.0.0* 2022.2
多次元 添字演算子 ( FTM ) * P2128R6 12 15 19.42* 14.0.3* 2022.2
lambda の属性 P2173R1 9 13 19.44* 13.1.6* 6.6 2022.2 22.5
#warning P2437R1 はい* はい 15.0.0* 6.5 2023.2 はい
エンコード不可能なワイド文字リテラルとマルチキャラクタワイド文字リテラルの削除 P2362R3 13 14 15.0.0* 6.7 2023.2
複合文の末尾におけるラベル P2324R2 13 16 16.0.0* 6.5 2023.2 23.9
区切りエスケープシーケンス P2290R3 13 15 15.0.0* 6.7 2023.2
名前付きユニバーサル文字エスケープ ( FTM ) * P2071R2 13 15 15.0.0* 6.7 2023.2
一部の constexpr 制限の緩和  ( FTM ) * P2448R2 13 17 (partial)
19
2024.0 (partial)
簡略化された暗黙ムーブ  ( FTM ) * P2266R3 13 13 6.7 2022.2
static operator ( ) ( 機能テストマクロ ) * P1169R4 13 16 19.44* 16.0.0* 6.7 2023.2
オプションの 拡張浮動小数点型 の要件 P1467R9 13 N/A 6.4
継承されたコンストラクタからのクラステンプレート引数推論 P2582R1 14
属性 [[ assume ]] P1774R8 13 19
ポータブルなソースファイルエンコーディングとしての UTF-8サポート P2295R6 13* 15* 19.0 (Update 2)* * 15.0.0* 2023.2
static operator [ ] ( FTM ) * P2589R1 13 16 19.44* 16.0.0* 6.7 2023.2
constexpr関数内での static constexpr 変数の許可  ( FTM ) * P2647R1 13 16 16.0.0* 2023.2
範囲ベースforループ初期化子における一時オブジェクトの寿命延長  ( FTM ) * P2644R1
P2718R0
CWG2659
15 19
宣言とその所在 P1787R6
DR11: lambda の後置戻り値型のスコープ変更 P2036R3
P2579R0
17 2023.2
DR20: 意味のあるエクスポート P2615R1 15 17 (partial)
DR20: consteval は上位への伝播が必要 ( FTM ) * P2564R3 14 17 16.0.0* 6.7 2024.0
DR98: Unicode標準附属書31を使用したC++識別子構文 P1949R7 12 14 14.0.0* 6.4 2022.2
DR11: 重複する属性を許可 属性 P2156R1 11 13 13.1.6* 6.5 23.9
DR20: 機能テストマクロの値の調整 __cpp_concepts P2493R0 12 19.32* 6.4 23.3
DR98: 既存の実装に合わせて wchar_t の要件を緩和 P2460R2 はい はい はい 15.0.0* 該当なし 2023.2
DR11: 定数式における未知のポインタと参照の使用 P2280R4 14 20 *
DR20: 求めていた等価演算子 P2468R2 13 16 16.0.0* 2023.2
DR20: char8_t 互換性と移植性の修正  ( FTM ) * P2513R4 13 16 19.34* 16.0.0* 2023.2
DR98/11: 診断ディレクティブの報告方法を明確化し、 診断ディレクティブ の報告を明確化し、テンプレートコンテキストでの非値依存式の static_assert を許可 CWG2518 13 17 16.0*
(部分的な実装)*
19.40*


C++23 機能


提案文書
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (旧 PGI)*
Nvidia nvcc
Cray

C++23 ライブラリ機能

**注記**: このHTMLフラグメントには翻訳すべきテキストがほとんど含まれていません。以下の要素のみが翻訳対象となります: - `title`属性内の説明文(ただしC++関連の用語は翻訳せず) - 括弧内の"FTM"(機能テストマクロ)はC++用語のため翻訳せず 現在の状態で既に要件を満たしています。HTMLタグ、属性、` `/`
`/``タグ内のテキスト、C++固有の用語はすべて保持されています。
翻訳内容: - `FTM` → `機能テストマクロ` (Feature Testing Macro) - `Feature-testing macro:` → `機能テストマクロ:` 注意事項: - HTMLタグ、属性は翻訳せず保持 - ` `, ` ` タグ内のC++コード (`std::basic_string::contains()` など) は翻訳せず保持 - C++専門用語は翻訳せず保持 - 書式設定は完全に保持 翻訳内容: - `FTM` → `機能テストマクロ` - `Feature-testing macro` → `機能テストマクロ` - C++固有の用語(`std::to_underlying`、`__cpp_lib_to_underlying`)は翻訳せず保持 - HTMLタグ、属性、コード内のテキストはすべて保持 変更点: - `FTM` を `機能テストマクロ` に翻訳 - C++固有の用語(`std::out_ptr()`, `std::inout_ptr()`, `__cpp_lib_out_ptr` など)は翻訳せず保持 - HTMLタグ、属性、コード内のテキストは完全に保持 - 数値、リンク、書式設定はすべて元のまま維持 **注記:** - HTMLタグ、属性、コード内のテキストは翻訳していません - C++固有の用語(`constexpr`、`type_info::operator==()`、`FTM`など)は原文のまま保持しています - タイトル属性内のテキストも翻訳対象外としています 翻訳内容: - "Feature-testing macro:" → "機能テストマクロ:" - その他のテキスト(`std::byteswap()`、`FTM`、`P1272R4`、バージョン番号など)はC++固有の用語またはコードとして翻訳せず保持 - HTMLタグ、属性、書式は完全に保持 変更点: - "Printing" を「出力」に翻訳 - HTMLタグ、属性、コード内のC++キーワード(`volatile`、`T`、`*`)は翻訳せず保持 - バージョン番号、提案番号(P1147R1)はそのまま保持 - 書式設定と構造は完全に維持 変更点: - `Feature-testing macro:` → `機能テストマクロ:` - その他のC++固有の用語(`std::move_only_function`、`FTM`、`__cpp_lib_move_only_function`、バージョン番号など)は翻訳せず保持 - HTMLタグ、属性、コード関連の要素は完全に保持 変更点: - `FTM` → `機能テストマクロ` - `Feature-testing macro:` → `機能テストマクロ:` - C++固有の用語(`constexpr`、`std::unique_ptr`)は翻訳せず保持 - HTMLタグ、属性、 内のコードは完全に保持 - 数値、バージョン情報、リンクテキストは変更なし **注記**: このHTMLフラグメントには翻訳すべきテキストコンテンツがほとんど含まれていません。以下の要素のみが翻訳対象となります: - `title`属性内のテキスト(ただしC++用語は翻訳しない) - 表示テキスト(ただしC++用語、コード、マクロ名は翻訳しない) 現在の内容は既にC++専門用語とコードが中心であり、翻訳すべき通常のテキストがほとんどないため、元のHTML構造をそのまま維持しています。 翻訳内容: - `Feature-testing macro:` → `機能テストマクロ:` - その他のC++固有の用語(`views::chunk_by`、`FTM`、`__cpp_lib_ranges_chunk_by`、バージョン番号など)は翻訳せず保持 - HTMLタグ、属性、コード内のテキストは完全に保持 **翻訳結果:** **翻訳の説明:** - `FTM` を「機能テストマクロ」に翻訳 - `Feature-testing macro` を「機能テストマクロ」に翻訳 - C++固有の用語(`views::stride`、`__cpp_lib_ranges_stride`、`P1899R3`)は翻訳せず保持 - HTMLタグ、属性、コード内のテキストは完全に保持 - バージョン番号(13, 19.34*)はそのまま保持 翻訳のポイント: - HTMLタグ、属性、C++固有の用語(`views::as_const`、`FTM`、`P2278R4`など)は翻訳せず保持 - ` `、`
`、``タグ内のテキストは存在しないため該当なし
- 「Rectifying constant iterators, sentinels, and ranges.」を「定数イテレータ、センチネル、および範囲の修正。」と正確に翻訳
- 「(partial)」を「(部分的)」と翻訳
- タイトル属性内のテキストは翻訳対象外として保持
**注記:** - HTMLタグ、属性、C++固有の用語(`views::cartesian_product`、`FTM`、`__cpp_lib_ranges_cartesian_product`など)は翻訳していません - コードタグ内のテキストは翻訳対象外です - 元の書式と構造を完全に保持しています 変更点: - `FTM` → `機能テストマクロ` - `Feature-testing macro:` → `機能テストマクロ:` C++固有の用語(`constexpr`、`std::bitset`、`__cpp_lib_constexpr_bitset`)は翻訳せず、HTMLタグと属性はそのまま保持しています。 **注記**: このHTMLフラグメントには翻訳対象となる自然言語テキストが含まれていません。以下の要素のみが含まれています: - HTMLタグと属性(翻訳対象外) - ` `タグ内のテキスト(`&&` - 翻訳対象外) - C++固有の用語(`basic_string::substr()` - 翻訳対象外) - バージョン番号、提案番号(`P2438R2`、`16`、`19.34*`、`15.0.0*` - 翻訳対象外) すべての要素が指定された翻訳除外条件に該当するため、元のHTML構造は完全に保持されています。 変更点: - `Feature-testing macro:` → `機能テストマクロ:` - HTMLタグ、属性、C++固有の用語(`std::is_implicit_lifetime`、`FTM`、`__cpp_lib_is_implicit_lifetime`、`P2674R1`など)は翻訳せず保持 - 数値や記号はそのまま保持 - 書式設定は完全に維持 翻訳内容: - "Repairing" → "修復" - "input range adaptors" → "入力レンジアダプタ"(C++用語は翻訳せず) - "and" → "および" - タイトルテキストの翻訳:"The counted_iterator part is implemented; the input range adaptors part is not implemented yet." → "counted_iterator部分は実装済み;入力レンジアダプタ部分は未実装" - "(partial)*" → "(部分的実装)*" HTMLタグ、属性、
タグ内のテキストは翻訳せず、元のフォーマットを保持しています。C++固有の用語(std::counted_iterator、input range adaptorsなど)は翻訳していません。
**注記**: 指定された要件に基づき、HTMLタグ、属性、 タグ内のテキスト、C++固有の用語は翻訳せず、元のフォーマットを保持しています。翻訳対象となる自然言語テキストが存在しないため、出力は入力と同一となります。
C++23 機能

提案文書

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
スタックトレースライブラリ ( FTM ) * P0881R7
P2301R1
12 (部分対応)*
14*
19.34*
<stdatomic.h> ( FTM ) * P0943R6 12 15 19.31* 14.0.3*
std::is_scoped_enum ( FTM ) * P1048R1 11 12 19.30* 13.0.0*
std::basic_string::contains() , std::basic_string_view::contains() ( 機能テストマクロ ) * P1679R3 11 12 19.30* 13.0.0*
std::to_underlying ( 機能テストマクロ ) * P1682R3 11 13 19.30* 13.1.6*
time_point<>::clock の要件緩和 P2212R2 N/A N/A N/A N/A
サイズフィードバックの提供 Allocatorインターフェースにて  ( FTM ) * P0401R6 15 19.30* 14.0.3*
<spanstream> : std::span ベースのバッファを持つ文字列ストリーム  ( FTM ) * P0448R4 12 19.31*
std::out_ptr() , std::inout_ptr() ( 機能テストマクロ ) * P1132R8 14 19 19.30*
constexpr type_info::operator==() ( FTM ) * P1328R1 12 17 19.33* *
19.34*
15.0.0*
std::stack および std::queue のイテレータペアコンストラクタ ( FTM ) * P1425R4 12 14 19.31* 14.0.3*
コンテナ推論ガイドにおけるアロケータの非推定コンテキスト P1518R2 12 * 13 * 19.31* * 13.1.6* *
ranges::starts_with() および ranges::ends_with() ( FTM ) * P1659R3 17 (部分的な実装)*
18
19.31* 16.0.0*
nullptr からの std::basic_string および std::basic_string_view の構築を禁止 P2166R1 12 13 19.30* 13.1.6*
std::invoke_r() ( FTM ) * P2136R3 12 17 19.31* 15.0.0*
Range コンストラクタ std::basic_string_view P1989R2 11 14 19.30* 14.0.3*
std::pair の転送 コンストラクタ のデフォルトテンプレート引数 P1951R1 14 14 19.30* 14.0.3*
ガベージコレクションと到達可能性ベースのリーク検出の削除 ( library support ) P2186R2 12 14 19.30* 14.0.3*
zip: views::zip , views::zip_transform , views::adjacent , および views::adjacent_transform ( FTM ) * P2321R2 13 15 (部分対応)* 19.33* (部分対応)* * *
19.37*
14.0.3*
連想コンテナの異種型削除オーバーロード  ( FTM ) * P2077R3 19.32*
std::byteswap() ( FTM ) * P1272R4 12 14 19.31* 14.0.3*
出力 volatile T * P1147R1 11.3 14 19.31* 14.0.3*
basic_string::resize_and_overwrite() ( 機能テストマクロ ) * P1072R10 12 14 19.31* 14.0.3*
std::optionalのモナド操作 std::optional ( FTM ) * P0798R8 12 14 19.32* 14.0.3*
std::move_only_function ( FTM ) * P0288R9 12 19.32*
std::exchange に条件付きnoexcept指定を追加 P2401R0 12 14 19.25* 14.0.3*
std::span および std::basic_string_view TriviallyCopyable であることを要求 P2251R1 はい はい はい はい
「Cヘッダ」のステータスの明確化 P2340R1 はい はい はい はい
<expected> ( FTM ) * P0323R12
P2549R1
12 16 19.33* 15.0.0*
<cmath> および <cstdlib> のconstexpr対応 ( FTM ) * P0533R9 4.6 (部分対応)*
std::unreachable() ( FTM ) * P0627R6 12 15 19.32* 14.0.3*
std::aligned_storage および std::aligned_union の非推奨化 P1413R3 13 16 19.33*
std::reference_constructs_from_temporary & std::reference_converts_from_temporary ( 機能テストマクロ ) * P2255R2 13 (部分的)*
14
21 (部分的)*
constexpr std::unique_ptr ( 機能テストマクロ ) * P2273R3 12 16 19.33* 15.0.0*
範囲からのコンテナと文字列の構築、 ranges::to() タグ付きコンストラクタ、挿入および代入メンバ関数を使用して ( FTM ) * ( FTM ) * P1206R7 14 (部分対応)*
15
17 19.34* 15.0.0*
ユーザー定義範囲アダプタのパイプサポート ( ranges::range_adaptor_closure , std::bind_back )  ( FTM ) * ( FTM ) * P2387R3 13 (部分対応)*
14
19 19.34*
ranges::iota() , ranges::shift_left() 、および ranges::shift_right() ( FTM ) * ( FTM ) * P2440R1 13 (部分対応)* 19.34*
views::join_with ( FTM ) * P2441R2 13 19.34*
views::chunk および views::slide ( FTM ) * ( FTM ) * P2442R1 13 19.33*
views::chunk_by ( FTM ) * P2443R1 13 18 19.33* 16.0.0*
std::mdspan : 非所有多次元配列参照  ( FTM ) * P0009R18
P2599R2
P2604R0
P2613R1
P2763R1
17 (部分対応)*
18
19.39* 15.0.0*
<flat_map> ( FTM ) * P0429R9 15 20
<flat_set> ( FTM ) * P1222R4 15 21
ranges::find_last() ranges::find_last_if() および ranges::find_last_if_not() ( FTM ) * P1223R5 13 19 19.36*
フリースタンディングライブラリ: イージー <utility> , <ranges> , および <iterator> P1642R11 13 * N/A
views::stride ( FTM ) * P1899R3 13 19.34*
views::stride ( 機能テストマクロ ) * P1899R3 13 19.34*
std::tuple とタプルライクオブジェクト間の互換性  ( FTM ) * P2165R4 14 2.9 (partial)* 19.36* (partial) *
19.37*
partial*
定数イテレータ、センチネル、および範囲の修正。 views:: as_const ( FTM ) * P2278R4 13 19.35* (部分的)*
19.36*
範囲のフォーマット ( FTM ) * P2286R8 15 (部分対応)*
15.2
16 19.37* (部分対応)*
19.39* (部分対応)*
19.41* (部分対応)*
19.42*
15.0.0*
デフォルトコンテナの フォーマット を改善 ( FTM ) * P2585R1 15 16 (partial)*
17
19.42* 15.0.0*
書式化出力ライブラリ <print> ( FTM ) * P2093R14
P2539R4
14 17 (部分的な実装)*
18
19.37* 15.0.0* *
16.0.0*
フォーマット std::thread::id および std::stacktrace のフォーマット ( FTM ) * P2693R1 14 17 (部分対応)* 19.38* 15.0.0*
constexpr std::to_chars() および std::from_chars() の整数型オーバーロードに対するconstexpr指定 ( FTM ) * P2291R3 13 16 19.34* 15.0.0*
ranges::contains() および ranges::contains_subrange() ( FTM ) * P2302R4 13 18 (部分実装)*
19
19.34* 16.0.0* *
範囲フォールドアルゴリズム ( FTM ) * P2322R6 13 19.35*
views::cartesian_product ( FTM ) * P2374R4
P2540R1
13 19.37*
比較コンセプトへのムーブ専用型サポートの追加 ( equality_comparable , totally_ordered , three_way_comparable )  ( FTM ) * P2404R3 19.36*
非レンジアルゴリズムへの入力としてのレンジイテレータ  ( FTM ) * P2408R5 19.34*
constexpr std::bitset ( 機能テストマクロ ) * P2417R2 13 16 19.34* 15.0.0*
basic_string::substr() && P2438R2 16 19.34* 15.0.0*
views::as_rvalue ( FTM ) * P2446R2 13 16 19.34* 15.0.0*
標準ライブラリモジュール  ( FTM ) * P2465R3 15* 17 (部分的な実装)* 19.35*
(部分的な実装)*
19.36*
std::forward_like() ( FTM ) * P2445R1 14 16 19.34* 15.0.0*
std::fstream の排他モードサポート ( FTM ) * P2467R1 12 18 19.36* 16.0.0*
views::repeat ( FTM ) * P2474R2 13 17 19.36* 15.0.0*
ムーブオンリー型を許可するためのレンジアダプタの緩和  ( FTM ) * P2494R2 14 17 19.34* 15.0.0*
std::basic_string_view 範囲 コンストラクタ は明示的であるべき P2499R0 12.2 16 19.34* 15.0.0*
std::generator : 範囲のための同期コルーチンジェネレータ  ( FTM ) * P2502R2
P2787R0
14 19.43*
std::apply に条件付きnoexcept指定を追加 P2517R1 10 18 19.34* 16.0.0*
明示的寿命管理 ( std::start_lifetime_as )  ( FTM ) * P2590R2
P2679R2
chrono型のローカライズされたフォーマットにおけるエンコーディング処理の明確化  ( FTM ) * P2419R2 15* 19.34* *
std::move_iterator は常に input_iterator であるべきではない ( FTM ) * P2520R0 12.3* 17* 19.34* * 15.0.0*
明示的オブジェクトパラメータの呼び出し演算子に対する 明示的オブジェクトパラメータ の推論ガイド更新 LWG3617 14 19.34*
static operator() の推論ガイド更新 static operator ( ) P1169R4 13 16 19.39* 15.0.0*
拡張浮動小数点型の 標準名とライブラリサポート P1467R9 13 19.37* *
std::expected のモナド操作 ( FTM ) * P2505R5 13 17 19.36* 15.0.0*
views::enumerate ( FTM ) * P2164R9 13 19.37*
std::is_implicit_lifetime ( FTM ) * P2674R1 20
std::common_reference_t std::reference_wrapper は参照型であるべき  ( FTM ) * ( FTM ) * P2655R3 19.37*
ユーザーによる std::allocator_traits の特殊化を禁止 P2652R2 19 19.37*
非推奨化 std::numeric_limits::has_denorm P2614R2 18 19.37* 16.0.0*
view s の複数パラメータコンストラクタを explicit にする P2711R1 17 (部分対応)* 19.36* * 15.0.0*
DR20: Rangesをほんの少し緩和  ( FTM ) * P2609R3 15 20 19.37*
DR20: 適切な平坦化のためのスタッシングイテレータの保存 P2770R0 14 18 19.37*
DR17: std::visit() for classes derived from std::variant ( FTM ) * P2162R2 11.3 13 19.20* *
19.30*
13.1.6*
DR20: 条件付き借用範囲 P2017R1 11 16 19.30*
DR20: 入力レンジアダプタの修復 および std::counted_iterator P2259R1 12 19.30* (部分的実装)*
19.31*
DR20: views::join はすべての範囲のビューを結合すべき P2328R1 11.2 15 19.30* 14.0.3*
DR20: view default_initializable を要求しなくなった ( FTM ) * P2325R3 11.3 16 19.30* 15.0.0*
DR20: レンジアダプタオブジェクトは引数を値でバインドする P2281R1 11 14 19.29 (16.10)*
(部分的な実装)*
19.31*
14.0.3*
DR20: constexpr std::optional および std::variant への適用 ( FTM ) * ( FTM ) * P2231R1 11.3 (部分的実装)*
12
13 (部分的実装)*
19
19.31* 13.1.6* (部分的実装)
DR20: views::lazy_split および再設計された views::split P2210R2 12 16 19.31* 15.0.0*
DR20: 修正 ranges::istream_view P2432R1 12 16 19.31* 15.0.0*
DR20: view 所有権を持つ  ( FTM ) * P2415R2 12 14 19.31* 14.0.3*
DR20: chronoフォーマッタのロケール処理の修正  ( FTM ) * P2372R3
P2418R2
13 19.31*
DR20: 整数クラス型のクリーンアップ P2393R1 19.32*
DR20: コンパイル時フォーマット文字列チェック; std::format() ファミリーのバイナリコードサイズ削減  ( FTM ) * P2216R3 13 14 (partial)*
15
19.32* 14.0.3*
DR20: 非constフォーマット可能型のサポートを std::format に追加 P2418R2 13 15 19.32* 14.0.3*
DR20: std::basic_format_string P2508R1 13 15 19.35* 14.0.3*
DR20: ポイズンピルは過度に有害  ( FTM ) * P2602R2 14 19 19.36*
DR20: std::format フィル文字の許可 P2572R1 14 17 19.37*
DR20: std::format の幅推定の改善 P2675R1 14 17 19.38*
DR20: std::barrier のフェーズ完了保証  ( FTM ) * P2588R3 19.28 (16.8)* *
19.36*


C++23 機能


提案文書
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

C++20 機能

C++20 コア言語機能

翻訳内容: - "virtual function" → "仮想関数" - HTMLタグ、属性、 内のテキスト(constexpr)、FTM、バージョン番号、タイトル属性内のテキストは翻訳せず保持 - 数値、リンクテキスト(P1064R0)はそのまま維持 このHTMLテーブル行はC++の比較演算子に関する情報を表示しており、翻訳対象となるテキストはありません。すべての要素は以下の通りです: - ` `タグ内のC++演算子(`<=> != ==`)は翻訳対象外 - リンクテキストの提案番号(P1185R2)は翻訳対象外 - 数値データ(バージョン番号など)は翻訳対象外 - HTMLタグ、属性、スタイルはすべて保持 したがって、翻訳すべきテキストは存在せず、元のHTML構造と内容が完全に保持されています。
C++20 機能

提案文書

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
許可 ラムダキャプチャ [ = , this ] P0409R2 8 6 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
__VA_OPT__ P0306R4
P1042R1
8 (部分対応)*
10 (部分対応)*
12
9 19.25* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
指示付き初期化子 ( FTM ) * P0329R4 4.7 (部分的)*
8
3.0 (部分的)*
10
19.21* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
ジェネリックラムダのテンプレートパラメータリスト ( FTM ) * P0428R2 8 9 19.22* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
ビットフィールドのデフォルトメンバ初期化子 P0683R1 8 6 19.25* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
クラステンプレート引数推論における初期化子リストコンストラクタ P0702R1 8 6 19.14* Yes 5.0 2021.1 20.7 12.0 11.0
const & -修飾メンバポインタ P0704R1 8 6 19.0 (2015)* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
Concepts ( FTM ) * P0734R0 5*
10
10 19.23* (部分的な実装)*
19.30*
12.0.0* (部分的な実装) 6.1 2023.1* 20.11 12.0 11.0
未評価コンテキストでのラムダ式 P0315R4 9 13 (一部)*
14 (一部)*
17
19.28 (16.8)* 13.1.6* (一部) 6.2 2023.1 (一部)
2024.0
20.7 12.0
三方比較演算子 ( FTM ) * P0515R3 10 8 (部分対応)
10
19.20* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11: 暗黙のラムダキャプチャの簡素化 P0588R1 8 19.24* 5.1 2021.1 20.7 12.0
範囲ベースforの初期化文 P0614R1 9 8 19.25* 11.0.0* 6.0 2021.7 20.11 12.0 11.0
デフォルト構築可能かつ代入可能なステートレス lambdas P0624R2 9 8 19.22* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
デフォルト化された特殊メンバ関数の型不一致 P0641R2 9 (部分的)* 8 19.0 (2015)* (部分的)* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
特殊化におけるアクセスチェック P0692R1 はい 8 (一部)
14
19.26* 14.0.0* 5.1 2021.1 20.7 12.0
ADLおよび非表示の関数テンプレート P0846R0 9 9 19.21* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
DR11: constexpr 関数定義が 定数評価に必要とされる場合 を指定する ( FTM ) * P0859R0 5.2 (部分的)*
9
8 19.27* (部分的)*
19.31* *
11.0.0* (部分的) 12.0 11.0
属性 [[ likely ]] および [[ unlikely ]] P0479R5 9 12 19.26* 13.0.0* 5.1 2021.7 20.7 12.0
typename をよりオプショナルにする P0634R3 9 16 19.29 (16.10)* 16.0.0* 5.1 2023.1 20.7 12.0
Pack-expansions における ラムダ初期化キャプチャ ( FTM ) * P0780R2 9 9 19.22* 11.0.3* 6.1 2021.7 20.11 12.0 11.0
属性 [[ no_unique_address ]] P0840R2 9 9 19.28 (16.9)* * 11.0.3* 5.1 2021.1 20.7 12.0 11.0
条件付き自明な特殊メンバ関数  ( FTM ) * P0848R3 10 16 19.28 (16.8)* 6.1 2021.7 20.11 12.0
DR17: 構造化バインディング のカスタマイゼーションポイント探索ルールの緩和 P0961R1 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
DR11: range-for ループのカスタマイゼーションポイント探索規則の緩和 P0962R1 8 8 19.25* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
DR17: アクセス可能なメンバーへの構造化バインディングを許可 P0969R0 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
破壊的 operator delete ( FTM ) * P0722R3 9 6 19.27* 10.0.0* 6.1 2023.1 20.11 12.0 11.0
クラス型の 定数テンプレートパラメータ P0732R2 9 12 (部分的な対応) 19.26* (部分的な対応)*
19.28 (16.9)*
13.0.0* (部分的な対応) 6.2 2023.1 (部分的な対応) 21.3 12.0
[=] による this の暗黙的キャプチャを非推奨化 キャプチャ P0806R2 9 7 19.22* 10.0.1* 5.1 20.7 12.0 11.0
explicit(bool) ( FTM ) * P0892R2 9 9 19.24* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
機能テストマクロの 統合 P0941R2 5 3.4 19.15* (部分対応)
19.20*
対応済み 5.0 2021.1 20.7 12.0 11.0
ユーザー宣言コンストラクタを持つ集成体を禁止 P1008R1 9 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
constexpr 仮想関数 ( FTM ) * P1064R0 9 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
比較演算の一貫性改善 P1120R0 10 8 (部分対応)
10
19.22* 12.0.0* 5.1 2023.1 20.7 12.0 11.0
char8_t ( FTM ) * P0482R6 9 7* 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
std::is_constant_evaluated() ( FTM ) * P0595R2 9 9 19.25* 11.0.3* 5.1 19.1 21.1 12.0 11.0
constexpr try - catch ブロック P1002R1 9 8 19.25* 10.0.1* 5.1 2023.1 20.7 12.0 11.0
即時関数 ( consteval )  ( FTM ) * P1073R3 10 (部分対応)*
11
11 (部分対応)
14 (部分対応)*
17
19.28 (16.8)*
(部分対応)*

19.29 (16.10)*
11.0.3* (部分対応)
15.0.0*
5.1 2021.1 20.7 12.0
ネストされたインライン名前空間 P1094R2 9 8 19.27* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
制約付き テンプレートパラメータ 宣言 の別のアプローチ P1141R2 10 10 19.26* (部分対応)
19.28 (16.9)*
12.0.5* 6.1 2023.1 20.11 12.0 11.0
符号付き整数は2の補数表現 P1236R1 9 9 Yes 11.0.3* N/A 2023.1* yes* 12.0 11.0
dynamic_cast と多相的な typeid 定数式 での使用 P1327R1 10 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
constexpr内での共用体のアクティブメンバの変更 constexpr ( FTM ) * P1330R0 9 9 19.10* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
コルーチン ( FTM ) * ( FTM ) * P0912R5
LWG3393
10 8 (部分対応)
17 (部分対応)*
19.0 (2015)* (部分対応)
19.10* *
19.28 (16.8)*
10.0.1* (部分対応) 5.1 2021.1 23.3* 12.0 (ホストコードのみ)
集約の 括弧初期化 ( FTM ) * P0960R3 10 16 19.28 (16.8)* 16.0.0* 5.1 2021.1 20.7 12.0
DR11: new 式における配列サイズの導出 P1009R2 11 9 19.27* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
モジュール ( FTM ) * P1103R3 11 (一部) 8 (一部) 19.0 (2015)* (一部)
19.10* *
19.28 (16.8)*
10.0.1* (一部) 2023.1 (一部)
より強力なUnicode要件 P1041R4
P1139R2
10 はい 19.0 (2015)* *
19.26* *
はい N/A 2023.1* はい 12.0 11.0
<=> != == P1185R2 10 10 19.22* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11: 異なる例外指定を持つ明示的にデフォルト化された関数 P1286R2 10 9 19.28 (16.8)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
ラムダキャプチャと構造化バインディングのストレージクラス指定子 P1091R3
P1381R1
10 8 (partial)
16
19.11* *
19.24* *
16.0.0* 5.1 2021.1 20.7 12.0
未知の境界を持つ配列への変換を許可 P0388R4 10 14 19.27* 14.0.0* 6.0 2021.5 20.11 12.0
constexpr コンテナ操作  ( FTM ) * P0784R7 10 10 19.28 (16.9)* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
volatile の一部の使用を非推奨化 P1152R4 10 10 19.27* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
constinit ( FTM ) * P1143R2 10 10 19.29 (16.10)* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
添字内のカンマ演算子を非推奨化 P1161R3 10 9 19.25* 11.0.3* 6.0 2021.7 20.11 12.0 11.0
[[ nodiscard ]] メッセージ付き P1301R4 10 9 19.25* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
constexpr関数内での自明なデフォルト初期化 P1331R2 10 10 19.27* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
未評価の asm 宣言が constexpr 関数内で使用可能 P1668R1 10 10 19.28 (16.9)* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
using enum ( FTM ) * P1099R5 11 13 19.24* 13.1.6* 6.3 2023.1 22.5 12.0
指定された比較カテゴリに対する 三方比較 の合成 P1186R3 11 10 19.24* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
DR17: [[ nodiscard ]] コンストラクタ向け P1771R1 10 9 19.24* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
エイリアステンプレートに対するクラステンプレート引数推論 ( FTM ) * P1814R0 10 19 19.27* 6.5 23.9 12.0
集成体に対するクラステンプレート引数推論 FTM * P1816R0
P2082R1
10*
11*
17 19.27* 6.3 2023.1 (partial)*
2024.1
23.3 12.0
DR11: ローカルオブジェクトと右辺値参照に対する暗黙のムーブ P1825R0 11* 13 19.24* 13.1.6* 6.0 2021.5 20.11 12.0
値による比較のデフォルト化を許可 P1946R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
std::weak_equality std::strong_equality を削除 P1959R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
定数テンプレートパラメータとの不整合 ( FTM ) * P1907R1 10 (部分対応)
11
18 (部分対応)* 19.26* 13.1.6* (部分対応) 6.2 2023.1 (部分対応) 21.3 12.0
DR98: 擬似デストラクタはオブジェクトの生存期間を終了させる P0593R6 11 11 はい 12.0.5* 該当なし 2023.1* はい 12.0 11.0
DR11: T * から bool への変換は縮小変換と見なすべき P1957R2 10*
11*
11 19.27* 12.0.5* 6.1 12.0 11.0


C++20 機能


提案文書
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (旧 PGI)*
Nvidia nvcc
Cray

C++20 ライブラリ機能

翻訳内容: - `Feature-testing macro:` → `機能テストマクロ:` - その他のC++固有の用語(`std::endian`、`FTM`、`__cpp_lib_endian`)、HTMLタグ、属性、コード内のテキストは翻訳せずに保持 - 数値、バージョン情報、リンクテキストはそのまま維持 翻訳のポイント: - `std::make_shared()` はC++固有の用語なので翻訳せず保持 - "Extending to support arrays" を「の配列サポート拡張」と自然な日本語に翻訳 - HTMLタグ、属性、数値、コード関連のテキストはすべて保持 - タイトル属性内のテキストも保持(英語のまま) - フォーマットと構造は完全に維持 変更点: - `Feature-testing macro:` → `機能テストマクロ:` - HTMLタグ、属性、C++固有の用語(`std::remove_cvref`、`__cpp_lib_remove_cvref`、`FTM`など)は翻訳せず保持 - 数値、バージョン情報、リンクテキストはそのまま維持 - 書式設定と構造は完全に保持 翻訳内容: - "Atomic" → "アトミック"(C++用語としてのatomicの日本語表記) - "and" → "および"(技術文書での正式な接続詞) - HTMLタグ、属性、` `タグ内の`std::shared_ptr`と`std::weak_ptr`、FTM、P0718R2、数値などは翻訳せず保持 - タイトル属性内のテキストも保持 - 書式と構造は完全に維持 **注記**: このHTMLフラグメントには翻訳対象となる自然言語テキストが含まれていません。すべての要素は以下のいずれかに該当します: - HTMLタグおよび属性 - C++標準ライブラリヘッダー名(` `) - 規格提案番号(P0754R2) - バージョン番号(9, 7, 19.22*, 10.0.0*) - コード要素内のテキスト したがって、指示に従い翻訳は不要です。 このHTML構造では、翻訳対象となるテキストはほとんど含まれておらず、以下の点に注意しました: - `std::atomic_ref` - C++固有の用語のため翻訳せず - `FTM` - 略語のため翻訳せず - `P0019R8` - 文書番号のため翻訳せず - 数値(10, 19, 19.28, 16.8) - 数値のため翻訳せず - HTMLタグ、属性、title属性内のテキスト - 翻訳せず 翻訳が必要なテキスト要素はこのHTML断片には含まれていません。 翻訳内容: - `Feature-testing macro:` → `機能テストマクロ:` - HTMLタグ、属性、コード内のテキストは翻訳せず保持 - C++固有の用語(`std::bit_cast()`、`FTM`、`__cpp_lib_bit_cast`など)は翻訳せず - 数値、バージョン情報、リンクテキストはそのまま保持 変更点: - `and` → `および` - `Feature-testing macro:` → `機能テストマクロ:` - HTMLタグ、属性、コードブロック内のテキストは翻訳せず保持 - C++固有の用語(std::unwrap_ref_decay, std::unwrap_reference, __cpp_lib_unwrap_ref)は翻訳せず保持 - 数値、バージョン情報、リンクテキストはそのまま保持 **翻訳結果:** **翻訳内容:** - `Feature-testing macro:` → `機能テストマクロ:` - その他のC++固有の用語(`std::execution::unseq`、`FTM`、`__cpp_lib_execution`など)は翻訳せず保持 - HTMLタグ、属性、コード内のテキストは完全に保持 翻訳のポイント: - "Traits for (un)bounded arrays" → "(非有界)有界配列のためのtraits" - "traits" はC++専門用語のため翻訳せず保持 - HTMLタグ、属性、title属性内のテキストは保持 - 括弧や記号類は日本語表記に合わせて調整 - 技術文書としての正確性と専門性を維持 翻訳内容: - `Feature-testing macro:` → `機能テストマクロ:` - HTMLタグ、属性、コード内のテキストは翻訳せず保持 - C++固有の用語(`std::to_array()`、`FTM`、`__cpp_lib_to_array`など)は翻訳せず保持 - 数値、バージョン情報、リンクテキストはそのまま保持 翻訳内容: - `Feature-testing macro:` → `機能テストマクロ:` - `Enabled for Clang 12+` → `Clang 12+で有効` 注意事項: - HTMLタグ、属性はそのまま保持 - ` `, `
`, ``タグ内のテキストは翻訳対象外(今回は該当なし)
- C++固有の用語(`constexpr`, `std::string`, `FTM`など)は翻訳せず保持
- 数値、バージョン情報、リンクテキストはそのまま保持
C++20 機能

提案文書

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
std::endian ( FTM ) * P0463R1 8 7 19.22* 10.0.0*
std::make_shared() の配列サポート拡張  ( FTM ) * P0674R1 12 15 19.27* 14.0.3*
浮動小数点アトミック ( FTM ) * P0020R6 10 18 19.22* 16.0.0*
同期化バッファ ( std::basic_osyncstream )  ( FTM ) * P0053R7 11 18 19.29 (16.10)*
constexpr for <algorithm> および <utility> ( FTM ) * P0202R3 10 8 (部分対応)
12
19.26* 10.0.1* (部分対応)
13.0.0*
<complex> に対するさらなる constexpr 対応 ( FTM ) * P0415R1 9 7 (部分対応)
16
19.27* 10.0.0* (部分対応)
15.0.0*
std::memory_order をスコープ付き列挙型にする P0439R0 9 9 19.25* 11.0.3*
文字列 プレフィックス および サフィックス チェック: string (_view) ::starts_with / ends_with ( FTM ) * P0457R2 9 6 19.21* 10.0.0*
operator<=> のライブラリサポート <compare> ( FTM ) * P0768R1 10 7 (部分的な実装)
12 (部分的な実装)*
17
19.20* (部分的な実装)
19.28 (16.9)*
13.0.0*
std::remove_cvref ( FTM ) * P0550R2 9 6 19.20* 10.0.0*
[[ nodiscard ]] 標準ライブラリ内の P0600R1 9 7 (部分的)
16
19.13* (部分的)
19.22*
10.0.0* (部分的)
15.0.0*
数値アルゴリズムでの std::move の使用 P0616R0 9 12 19.23* 13.0.0*
ポインタを生ポインタに変換するユーティリティ ( FTM ) * P0653R2 8 6 19.22* はい
アトミック std::shared_ptr および std::weak_ptr ( FTM ) * P0718R2 12 19.27*
std::span ( FTM ) * P0122R7 10 7 19.26* 10.0.0*
カレンダー および タイムゾーン ( FTM ) * P0355R7 11 (一部実装)*
13 (一部実装)*
14
7 (一部実装)
19 ( 一部実装 )*
19.29 (16.10)* 10.0.0* (一部実装)
<version> P0754R2 9 7 19.22* 10.0.0*
順序なしコンテナの比較 P0809R0 16.0*
ConstexprIterator 要件  ( FTM ) * ( FTM ) * P0858R0 9 12 19.11* 13.0.0*
std::basic_string::reserve() は縮小すべきではない P0966R1 11 8 19.25* 10.0.1*
アトミック比較交換 パディングビット付き P0528R3 13 19.28 (16.8)*
std::atomic_ref ( FTM ) * P0019R8 10 19 19.28 (16.8)*
contains ( ) 連想コンテナのメンバー関数、例: std::map::contains() P0458R2 9 13 19.21* 13.1.6*
DR11: ピースワイズ構築 のための保証されたコピー省略 P0475R1 9 はい 19.29 (16.10)* はい
std::bit_cast() ( FTM ) * P0476R2 11 14 19.27* 14.0.3*
整数の2の累乗 2 操作 :

std::bit_ceil() , std::bit_floor() , std::bit_width() , std::has_single_bit() ( FTM ) *

P0556R3
P1956R1
9*
10*
9*
12*
19.25* *
19.27* *
19.28 (16.8)*
11.0.3* *
13.0.0* *
erase風アルゴリズムの戻り値の改善  ( FTM ) * P0646R1 9 10 19.21* 12.0.0*
std::destroying_delete_t ( FTM ) * P0722R3 9 9 19.27* 11.0.3*
std::is_convertible ( FTM ) * P0758R1 9 9 19.23* 11.0.3*
std::shift_left/right <algorithm> に追加 ( FTM ) * P0769R2 10 12 19.21* 13.0.0*
std::swap() および swap 関連関数のConstexpr化 P0879R0 10 13 19.26* 13.1.6*
std::type_identity ( FTM ) * P0887R1 9 8 19.21* 10.0.1*
コンセプトライブラリ ( FTM ) * P0898R3 10 13 19.23* 13.1.6*
constexpr 比較演算子 std::array 向け実装 P1023R0 10 8 19.27* 10.0.1*
std::unwrap_ref_decay および std::unwrap_reference ( FTM ) * P0318R1 9 8 19.21* 10.0.1*
std::bind_front() ( FTM ) * P0356R5 9 13 19.25* 13.1.6*
std::reference_wrapper 不完全型に対するサポート P0357R3 9 8 19.26* 10.0.1*
operator>>(basic_istream&, CharT*) の修正 P0487R1 11 8 19.23* 10.0.1*
char8_t のライブラリサポート ( FTM ) * P0482R6 9 8 (部分的なサポート)
16
19.22* 10.0.1* (部分的なサポート)
15.0.0*
ユーティリティ関数 で実装する uses-allocator 構築 P0591R4 9 16 19.29 (16.10)* 15.0.0*
DR17: std::variant および std::optional はコピー/ムーブの自明性を伝播すべき P0602R4 8.3 8 19.11* 10.0.1*
DR17: 適切な std::variant 変換コンストラクタ P0608R3 10 9 19.29 (16.10)* *
19.42* *
11.0.3*
std::function のムーブコンストラクタは noexcept であるべき P0771R1 7.2 6 19.22* はい
ワン レンジ プロポーザル ( FTM ) * P0896R4 10 13 (部分的な実装)
15*
19.29 (16.10)* 14.0.3*
非均質検索( 非順序連想コンテナ ) ( FTM ) * P0919R3
P1690R1
11 12 19.23* (P0919R3)
19.25* (P1690R1)
13.0.0*
<chrono> zero() min() および max() noexcept であるべき P0972R0 9 8 19.14* 10.0.1*
constexpr std::pointer_traitsでの std::pointer_traits 内 ( FTM ) * P1006R1 9 8 19.26* 10.0.1*
std::assume_aligned() ( FTM ) * P1007R3 9*
11
15 19.28 (16.9)* 14.0.3*
デフォルト初期化によるスマートポインタ作成 (例: make_unique_for_overwrite )  ( FTM ) * P1020R1
P1973R1
11*
12*
16 19.28 (16.9)* 15.0.0*
その他 constexpr ビット ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1032R1 10 13 19.28 (16.8)* 13.1.6*
std::span の比較演算子を削除 P1085R2 10 8 19.26* 10.0.1*
stateful allocatorの伝播を operator+(basic_string) においてより一貫性のあるものにする P1165R1 10 15 19.26* 14.0.3*
一貫したコンテナ消去、例: std::erase(std::vector) または std::erase_if(std::map) ( FTM ) * P1209R0
P1115R3
9*
10*
8*
11*
19.25* *
19.27* *
10.0.1* *
12.0.5* *
標準ライブラリヘッダーユニット P1502R1 11 19.29 (16.10)*
polymorphic_allocator<> 語彙型としての使用  ( FTM ) * P0339R6 9 16 19.28 (16.9)* 15.0.0*
std::execution::unseq ( FTM ) * P1001R2 9 17 19.28 (16.8)*
std::execution::unseq ( FTM ) * P1001R2 9 17 19.28 (16.8)*
std::lerp() および std::midpoint() ( FTM ) * P0811R3 9 9 19.23* (部分的な実装)
19.28 (16.8)*
11.0.3*
std::span のユーザビリティ向上 P1024R3 10 9*
14
19.26* 11.0.3*
DR17: std::create_directory() を直感的にする P1164R1 8.3 12 19.20* 13.0.0*
std::ssize() および符号なしエクステント for std::span ( FTM ) * P1227R2 10 9 19.25* 11.0.3*
非有界 有界 配列のためのtraits  ( FTM ) * P1357R1 9 9 19.25* 11.0.3*
std::to_array() ( FTM ) * P0325R4 10 10 19.25* 12.0.0*
std::basic_stringbuf のバッファへの効率的なアクセス P0408R7 11 17 19.29 (16.10)* 15.0.0*
レイアウト - 互換性 および ポインタ - 相互変換可能性 トレイト  ( FTM ) * ( FTM ) * P0466R5 12 19.29 (16.10)* *
ビット操作 : std ::

rotl() , rotr() , countl_zero() , countl_one() , countr_zero() , countr_one() , popcount() ( FTM ) *

P0553R4 9 9 19.25* *
19.28 (16.8)*
11.0.3*
数学定数 ( FTM ) * P0631R8 10 11 19.25* 12.0.5*
テキストフォーマット ( FTM ) * P0645R10 13 14 * *
17
19.29 (16.10)* 15.0.0*
std::stop_token および std::jthread ( FTM ) * P0660R10 10 17
(一部)*

20*
19.28 (16.9)*
constexpr std::allocator および関連ユーティリティ  ( FTM ) * P0784R7 10 12 19.29 (16.10)* 13.0.0*
constexpr std::string ( FTM ) * P0426R1
P1032R1
P0980R1
12 15 19.29 (16.10)*
19.30* *
14.0.3*
constexpr std::vector ( 機能テストマクロ ) * P1004R2 12 15 19.29 (16.10)*
19.30* *
14.0.3*
入力 range adaptors P1035R7 10 16 19.29 (16.10)* 15.0.0*
constexpr std::invoke() および関連ユーティリティ P1065R2 10 12 19.28 (16.8)* 13.0.0*
アトミック待機と通知、 std::counting_semaphore std::latch および std::barrier ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1135R6 11 11 19.28 (16.9)* 13.1.6*
std::source_location ( FTM ) * P1208R6 11 15*
(部分的な実装)
16
19.29 (16.10)* 15.0.0*
標準ライブラリへの <=> の追加 P1614R2 10 14*
(部分的な実装)
17*
(部分的な実装)
19
19.29 (16.10)* 13.1.6* (部分的な実装)
constexpr std::atomicおよびstd::atomic_flagのデフォルトコンストラクタ std::atomic および std::atomic_flag のデフォルトコンストラクタ ( FTM ) * P0883R2 10 13 19.26* 13.1.6*
constexpr 数値アルゴリズムの numeric algorithms 向け ( FTM ) * P1645R1 10 12 19.26* 13.0.0*
安全な整数比較関数 ( FTM ) * P0586R2 10 13 19.27* 13.1.6*


C++20 機能


提案文書
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

旧規格

関連項目

機能テスト (C++20) C++言語およびライブラリ機能に対応するプリプロセッサマクロのセット
Cドキュメント コンパイラサポート