C++26
From cppreference.com
< cpp
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* | |||||||
| void* からの constexpr キャスト (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"); (FTM)* | P2573R2 | 15 | 19 | ||||||||
| 可変引数フレンド (FTM)* | P2893R3 | 15 | 20 | ||||||||
| DR98: 集成体初期化における波括弧省略の規則の明確化 | P3106R1 | はい | 17 | ||||||||
| DR20: モジュール宣言をマクロにすることを禁止 | P3034R1 | 15 | |||||||||
| DR11: トリビアルな無限ループは未定義動作ではない | P2809R3 | 14 | 19 | ||||||||
| constexpr 配置new (FTM)* (FTM)* | P2747R2 | 15 | 20 | ||||||||
| 条件としての構造化束縛宣言 (FTM)* | P0963R3 | 15 | 6 (部分的)* 21 |
||||||||
| 畳み込み式を含む制約の順序 (FTM)* | P2963R3 | 19 | |||||||||
| 不完全型へのポインタのdeleteは不適格とすべき | P3144R2 | 15 | 19 | 6.7 | |||||||
| 構造化束縛がパックを導入できる (FTM)* | P1061R10 | 21 | |||||||||
| constexpr 構造化束縛と constexpr 変数への参照 | P2686R5 | 6.7 | |||||||||
| constexpr 例外 (FTM)* | P3068R6 | ||||||||||
| オックスフォード可変引数カンマ | P3176R1 | 15 | 20 | ||||||||
| 非推奨の配列比較の削除 | P2865R6 | 15 | |||||||||
#embed (FTM)* |
P1967R14 | 15 | 19* | ||||||||
| コンセプトおよび変数テンプレートのテンプレートパラメータ (FTM)* | P2841R7 | ||||||||||
| トリビアル再配置可能性 (FTM)* | P2786R13 | ||||||||||
| トリビアル共用体 (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** | ||
| 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 | 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接頭辞を ratio に追加: std::quecto, std::ronto, std::ronna, std::quetta (FTM)* | P2734R0 | 14 | 17 | |||
| std::function_ref: 型消去された呼び出し可能参照 (FTM)* | P0792R14 | |||||
| std::copyable_function (FTM)* | P2548R6 | |||||
| std::bind_front、std::bind_back、std::not_fn の NTTP 呼び出し可能オブジェクト対応 (FTM)* (FTM)* (FTM)* | P2714R1 | |||||
| std::submdspan() (FTM)* | 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 | 18 | 16.0.0* | |||
| std::span::at() (FTM)* | P2821R5 | 14 | 18 | 16.0.0* | ||
| std::complex へのタプルプロトコルの追加 (FTM)* | P2819R2 | 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 (FTM)* | P2542R8 | 15 | ||||
| 文字列と文字列ビューの連結 (FTM)* | P2591R5 | 15 | 19 | |||
| アルゴリズムのリスト初期化を有効にする (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() を用いた空白行の出力 (FTM)* | P3142R0 | 14* | 19* | 19.41** | ||
| std::polymorphic_allocator::destroy の非推奨化解除 | P2875R4 | 15 | 19.41* | |||
| 非推奨の strstream の削除 | P2867R2 | 19 | ||||
| 非推奨の std::shared_ptr アトミックアクセス API の削除 | P2869R4 | |||||
| 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 の Range サポート (FTM)* | P3168R2 | |||||
| std::is_virtual_base_of: 仮想基底クラスを検出する型特性 (FTM)* | P2985R0 | 15 | 20 | |||
| std::mdspan 用の std::dims (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 | ||||
| DR20: アルゴリズム関数オブジェクト | P3136R1 | はい | はい | 19.39* | はい | |
| std::ranges::cache_latest_view (FTM)* | P3138R5 | 15 | ||||
| std::expected の 等価演算子を制約する (FTM)* | P3379R0 | 15 | ||||
| std::aligned_accessor: ポインタのオーバーアライメントを表す std::mdspan アクセサ (FTM)* | P2897R7 | |||||
| std::is_sufficiently_aligned: ポインタのアライメント事前条件をチェックする (FTM)* | P2897R7 | |||||
| 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 |
|||||
| <stdbit.h> と <stdckdint.h> | P3370R1 | |||||
| <simd>: データ並列型 (FTM)* | P1928R15 P3430R3 P3441R2 P3287R3 P2663R7 P2933R4 |
|||||
| 実行環境を作成するためのユーティリティ | P3325R5 | |||||
| 例外型 (例: std::bad_alloc, std::bad_cast など) の constexpr 対応 (FTM)* | P3068R6 P3378R2 |
|||||
| トリビアル再配置可能性の特性と操作 (FTM)* | P2786R13 | |||||
std::memory_order::consume の無害化と非推奨化 |
P3475R1 | |||||
| std::monostate を <utility> に配置 | P0472R3 | 15 | ||||
| std::indirect (FTM)* | P3019R14 | |||||
| std::polymorphic (FTM)* | P3019R14 | |||||
| さらなる constexpr コンテナとアダプタ (FTM)* | P3372R2 | |||||
| 非トリビアル型に対する constexpr std::inplace_vector (FTM)* | P3074R7 | |||||
| std::ranges::to_input_view (FTM)* | P3137R3 | |||||
| std::ranges::approximately_sized_range と std::ranges::reserve_hint (FTM)* | P2846R6 | |||||
| <hive>: 削除された要素のメモリ位置を再利用するバケットベースのコンテナ (FTM)* | P0447R28 | |||||
| <contracts>: 契約違反処理のサポート (FTM)* | P2900R14 | |||||
| 標準ライブラリの堅牢化 | P3471R4 | 19.44* (部分的)* | ||||
| フリースタンディングライブラリ: algorithm、numeric、random (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* | P2976R1 | |||||
| DR20: contiguous イテレータのポインタへの変換 | P3349R0 | |||||
| C++26 機能 |
提案文書 |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
* - 星印*が付いているセルにカーソルを合わせると、追加のポップアップノートが表示されます。
DRnn - 「DR」の後の数字nnは、欠陥報告が適用される対象のC++リビジョンを示します。例: DR20 → C++20
[編集] 外部リンク
| 1. | C++26 - Wikipedia |