C++26
C++標準の次世代。
C++26の現在のISスケジュール: P1000R6 (2024-05-14).
| このセクションは不完全です |
目次 |
新しい言語機能
新規ライブラリ機能
新規モジュール
新規ヘッダー
- <contracts>
- <debugging>
- <hazard_pointer>
- <hive>
- <inplace_vector>
- <linalg>
- <rcu>
- <simd>
- <text_encoding>
C互換性ヘッダー:
廃止予定の機能
削除された機能
| このセクションは不完全です |
非推奨機能
| このセクションは不完全です |
不具合報告
コンパイラサポート
主な記事: C++26 コンパイラサポート
C++26 コア言語機能
|
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 | |||||||||
| 不完全型へのポインタの 削除は不適格であるべき | 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
(
機能テストマクロ
)
*
|
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 ライブラリ機能
|
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 | |||||
| <rcu> : Read-Copy Update ( 機能テストマクロ ) * | 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 | ||||
| 文字列 と 文字列ビュー の連結 ( FTM ) * | P2591R5 | 15 | 19 | |||
| アルゴリズムのリスト初期化を有効化 algorithms ( FTM ) * |
P2248R8
P3217R0 |
15 | ||||
| std::ranges::generate_random ( 機能テストマクロ ) * | P1068R11 | |||||
| 比較演算子 の std::reference_wrapper に対する実装、および std::pair 、 std::tuple 、 std::optional 、 std::variant の比較演算子に対する制約 ( FTM ) * ( FTM ) * | P2944R3 | 14 | 19 (部分的) * | |||
| Padded 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の 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 |
|||||
| 実行環境を作成するためのユーティリティ execution environments | P3325R5 | |||||
| constexpr 例外型に対するconstexpr指定、例: std::bad_alloc , std::bad_cast など ( FTM ) * |
P3068R6
P3378R2 |
|||||
| 自明な再配置可能性の特性と操作 ( FTM ) * | P2786R13 | |||||
無効化および非推奨化
std::memory_order::consume
|
P3475R1 | |||||
| std::monostate を <utility> に配置 | P0472R3 | 15 | 21 | 19.50* | ||
| std::indirect ( FTM ) * | P3019R14 | |||||
| std::polymorphic ( 機能テストマクロ ) * | 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
|
P3372R3 | |||||
| constexpr std::inplace_vector 非トリビアル型に対する ( FTM ) * | P3074R7 | |||||
| std::ranges::to_input_view ( 機能テストマクロ ) * | 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*
|
*
- 星印が付いたセルにマウスを重ねると
*
追加のポップアップ注釈が表示されます。
DR
nn
- 「DR」に続く数字
nn
は欠陥報告書が適用される対象C++リビジョンを示します(例:DR20 → C++20)。
外部リンク
| 1. | C++26 - Wikipedia |