このページはC++29に採用された言語機能の変更を解説しています。
のちのC++規格でさらに変更される場合があるため関連項目を参照してください。
概要
言語
| マクロ名 | 値 | 機能 |
|---|---|---|
__cpp_concepts |
202606L |
requires式の複合要件で条件付きnoexcept指定を許可 |
__cpp_consteval |
202606L |
consteval-only型の規則をconsteval-only値の規則へ置き換え |
__cpp_contracts |
202606L |
仮想関数への事前条件・事後条件の指定を許可 |
__cpp_impl_coroutine |
202606L |
コルーチンのpromise型でreturn_valueとreturn_voidの両方の宣言を許可 |
__cpp_designated_initializers |
202606L |
基底クラスのメンバ変数に対する指示付き初期化を許可 |
__cpp_named_character_escapes |
202606L |
名前付きユニバーサルキャラクタ名で使用できる別名を拡張 |
__cpp_pack_indexing |
202606L |
テンプレートテンプレートパラメータのパックへのインデックスアクセスを許可 |
__cpp_pp_embed |
202606L |
#embedにoffsetパラメータを追加 |
ライブラリ
ライブラリの機能テストマクロは全て<version>でも提供される。
| マクロ名 | 値 | 機能 | ヘッダ |
|---|---|---|---|
__cpp_lib_expected |
202606L |
std::expectedに、エラー値を保持しているかを判定するhas_error()メンバ関数を追加 |
<expected> |
__cpp_lib_hazard_pointer |
202606L |
<hazard_pointer>に、複数のハザードポインタをまとめて構築・破棄するstd::make_hazard_pointer_batch()関数とstd::clear_hazard_pointer_batch()関数を追加 |
<hazard_pointer> |
__cpp_lib_map_lookup |
202606L |
std::map・std::unordered_map・std::flat_mapに、指定したキーを持つ要素をoptionalとして取得するlookup()メンバ関数を追加 |
<map>, <unordered_map>, <flat_map> |
__cpp_lib_mdspan_copy |
202606L |
<mdspan>に、多次元配列ビューをコピーするstd::copy()と値を代入するstd::fill()を追加 |
<mdspan> |
__cpp_lib_pointer_tag_pair |
202606L |
<memory>に、ポインタの下位ビットへタグ値を格納するstd::pointer_tag_pairを追加 |
<memory> |
__cpp_lib_simd |
202606L |
<simd>に、SIMDデータ用の連番を生成するstd::simd::iota変数テンプレートなどを追加 |
<simd> |
__cpp_lib_simd_bitops |
202607L |
<simd>に、ビット列を操作するbit_reverse()・bit_repeat()・bit_compress()・bit_expand()関数と、未定義動作にならないシフトshl()・shr()関数を追加 |
<simd> |
__cpp_lib_thread_attributes |
202606L |
std::threadとstd::jthreadに、スレッド名を設定するname_hintとスタックサイズを設定するstack_size_hintのスレッド属性を追加 |
<thread> |
__cpp_lib_to_chars |
202606L |
std::to_chars()の浮動小数点数に対する既定表現を、値の範囲によって固定小数表記と指数表記を選択するよう変更 |
<charconv> |
__cpp_lib_view_interface |
202606L |
std::ranges::view_interfaceに、範囲チェックをともなって要素へアクセスするat()メンバ関数を追加 |
<ranges> |
参照
- SD-FeatureTest: Feature-Test Macros and Policies - isocpp
- P3950R1
return_value&return_voidAre Not Mutually Exclusive- C++29で
__cpp_impl_coroutineが202606Lに更新された
- C++29で
- P4101R1 Consteval-only Values for C++26
- C++29で
__cpp_constevalが202606Lに更新された
- C++29で
- P3540R3
#embedoffset parameter- C++29で
__cpp_pp_embedが202606Lに更新された
- C++29で
- P2287R6 Designated-initializers for Base Classes
- C++29で
__cpp_designated_initializersが202606Lに更新された
- C++29で
- P3733R1 More named universal character escapes
- C++29で
__cpp_named_character_escapesが202606Lに更新された
- C++29で
- P3097R3 Contracts for C++: Virtual functions
- C++29で
__cpp_contractsが202606Lに更新された
- C++29で
- P3822R2 Conditional noexcept specifiers in compound requirements
- C++29で
__cpp_conceptsが202606Lに更新された
- C++29で
- P3670R4 Pack Indexing for Template Names
- C++29で
__cpp_pack_indexingが202606Lに更新された
- C++29で
- P3798R1 The
unexpectedinstd::expected- C++29で
__cpp_lib_expectedが202606Lに更新された
- C++29で
- P3428R4 Hazard Pointer Batches
- C++29で
__cpp_lib_hazard_pointerが202606Lに更新された
- C++29で
- P3091R6 Better Lookups for
map,unordered_map, andflat_map- C++29で
__cpp_lib_map_lookupが追加された
- C++29で
- P3242R4 Copy and fill for
mdspan- C++29で
__cpp_lib_mdspan_copyが追加された
- C++29で
- P3125R6 constexpr pointer tagging
- C++29で
__cpp_lib_pointer_tag_pairが追加された
- C++29で
- P3319R6 Add an iota object for simd (and more)
- C++29で
__cpp_lib_simdが202606Lに更新された
- C++29で
- P3772R2 std::simd overloads for bit permutations
- C++29で
__cpp_lib_simd_bitopsが追加された
- C++29で
- P3793R2 Better shifting
- C++29で
__cpp_lib_simd_bitopsが追加された
- C++29で
- P2019R9 Thread attributes
- C++29で
__cpp_lib_thread_attributesが追加された
- C++29で
- P3505R4 Fix the default floating-point representation in
std::format- C++29で
__cpp_lib_to_charsが202606Lに更新された
- C++29で
- P3052R2
view_interface::at()- C++29で
__cpp_lib_view_interfaceが追加された
- C++29で