最終更新日時:
が更新

履歴 編集

機能テストマクロ(C++29)

このページはC++29に採用された言語機能の変更を解説しています。

のちのC++規格でさらに変更される場合があるため関連項目を参照してください。

概要

言語

マクロ名 機能
__cpp_concepts 202606L requires式の複合要件で条件付きnoexcept指定を許可
__cpp_consteval 202606L consteval-only型の規則をconsteval-only値の規則へ置き換え
__cpp_contracts 202606L 仮想関数への事前条件・事後条件の指定を許可
__cpp_impl_coroutine 202606L コルーチンのpromise型でreturn_valuereturn_voidの両方の宣言を許可
__cpp_designated_initializers 202606L 基底クラスのメンバ変数に対する指示付き初期化を許可
__cpp_named_character_escapes 202606L 名前付きユニバーサルキャラクタ名で使用できる別名を拡張
__cpp_pack_indexing 202606L テンプレートテンプレートパラメータのパックへのインデックスアクセスを許可
__cpp_pp_embed 202606L #embedoffsetパラメータを追加

ライブラリ

ライブラリの機能テストマクロは全て<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::mapstd::unordered_mapstd::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::threadstd::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>

参照