最終更新日時: 2025年07月10日 10時26分30秒 (JST)
Koichi Murase が更新

履歴 編集

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

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

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

## 概要

SD-6 は C++11 の機能について以下のテストマクロを定義することを推奨している：

マクロ名 | 値 | 機能 | ヘッダ
--- | --- | --- | ---
`__cpp_alias_templates` | `200704` | エイリアステンプレート | predefined
`__cpp_attributes` | `200809` | 属性 | predefined
`__cpp_constexpr` | `200704` | `constexpr` | predefined
`__cpp_decltype` | `200707` | `decltype` | predefined
`__cpp_delegating_constructors` | `200604` | 委譲コンストラクタ | predefined
`__cpp_inheriting_constructors` | `200802` | 継承コンストラクタ | predefined
`__cpp_initializer_lists` | `200806` | 初期化子リスト | predefined
`__cpp_lambdas` | `200907` | ラムダ式 | predefined
`__cpp_nsdmi` | `200809` | 非静的メンバ変数初期化子 | predefined
`__cpp_range_based_for` | `200907` | 範囲for文 | predefined
`__cpp_raw_strings` | `200710` | 生文字列リテラル | predefined
`__cpp_ref_qualifiers` | `200710` | `*this` のムーブセマンティクス | predefined
`__cpp_rvalue_references` | `200610` | 右辺値参照 | predefined
`__cpp_static_assert` | `200410` | コンパイル時アサート | predefined
`__cpp_unicode_characters` | `200704` | ユニコード文字 | predefined
`__cpp_unicode_literals` | `200710` | ユニコードリテラル | predefined
`__cpp_user_defined_literals` | `200809` | ユーザー定義リテラル | predefined
`__cpp_variadic_templates` | `200704` | 可変引数テンプレート | predefined
`__has_cpp_attribute(carries_dependency)` | `200809` | 属性 | predefined
`__has_cpp_attribute(noreturn)` | `200809` | 属性 | predefined

## 参照

- SD-6: SG10 Feature Test Recommendations: Standard C++