Namespaces
Variants

アノテーション (C++26以上)

ja.cppreference.net から
 
 
C++言語
一般トピック
フロー制御
条件付き実行文
if
反復文 (ループ)
for
範囲for (C++11)
ジャンプ文
関数
関数宣言
ラムダ関数式
inline指定子
動的例外指定 (C++17まで*)
noexcept指定子 (C++11)
例外
名前空間
型
指定子
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
記憶域期間指定子
初期化
式
代替表現
リテラル
真偽 - 整数 - 浮動小数点
文字 - 文字列 - nullptr (C++11)
ユーザ定義 (C++11)
ユーティリティ
属性 (C++11)
型
typedef宣言
型エイリアス宣言 (C++11)
キャスト
メモリ確保
クラス
クラス特有の関数プロパティ
explicit (C++11)
static

特殊メンバ関数
テンプレート
その他
 

リフレクションで観察できる方法で宣言に情報を付加します。

構文

アノテーションのリストは 属性指定子内で導入されます。各アノテーションは =で始まります。

= 定数式

説明

アノテーションは、型、型エイリアス、変数、関数、void以外の型の関数パラメータ、名前空間、列挙子、基底指定子、または非静的データメンバの任意の宣言に適用できます。

E を std::meta::reflect_constant(expr) とすると (ここで expr は 定数式である)、E は 定数式でなければなりません。E の結果は、アノテーションのリフレクションに対して std::meta::constant_of を呼び出すことで観察できます。

アノテーションは、たとえ同等の値を持ち同じ宣言に適用されても、常に互いに区別されます。

[[=42, =42]] int x;
static_assert(std::meta::annotations_of(^^x).size() == 2);

[[=42]] int f();
[[=24]] int f();
static_assert(std::meta::annotations_of(^^f).size() == 2);

アノテーションへの代入は 即時コンテキストではありません。

例

関連項目

リフレクトされたエンティティに適用されるアノテーションを取得します
(関数)
リフレクトされたエンティティに適用され、指定された型を持つアノテーションを取得します
(関数)