std::meta::members_of
ja.cppreference.net より
| ヘッダ <meta>
|
||
consteval std::vector<std::meta::info>
members_of( std::meta::info r, std::meta::access_context ctx );
|
で定義 (C++26以降) | |
std::vector を返します。これは r が表すクラス型または名前空間のメンバのリフレクションを、アクセスコンテキスト ctx でフィルタリングしたものを含みます。
結果の各リフレクション m は、適格な宣言を持ち、かつ 表現可能(下記参照)なアクセス可能なメンバを表します。アクセス可能性は std::meta::is_accessible(m, ctx) によって決定されます。
Q を、r が表すクラス型または名前空間とします。
宣言は、以下のすべての要件を満たす場合に 適格です:
Qのスコープ内にある。(例えば、ブロックスコープの関数宣言は適格ではありません。)- friend 宣言ではない。
- クロージャ型 の宣言ではない。
- (部分特殊化または完全特殊化を含む)テンプレート特殊化の宣言ではない。
Qがクロージャ型ではないクラス型である場合、その宣言はQの直接メンバであり、 のネストされた無名共用体のバリアントメンバではない。QQがクロージャ型である場合、その宣言は関数呼び出し演算子または関数呼び出し演算子テンプレートを導入する。
クロージャ型 Q の他のメンバの宣言が適格かどうかは処理系定義です。
members_of 呼び出しより前の宣言のみが考慮されます。
メンバは、以下のいずれかである場合に 表現可能です:
- クラス型または列挙型
- 型エイリアス
- クラステンプレート、関数テンプレート、変数テンプレート、エイリアステンプレート、またはコンセプト
- 未推論の プレースホルダ型
- を含まない型を持つ変数または参照
F関数
- であって、以下を満たすもの:
F - の型が未推論のプレースホルダ型を含まない;
F - の制約(もしあれば)が満たされる;かつ
Fプロスペクティブデストラクタ である場合、選択されたデストラクタである
- であって、以下を満たすもの:
- データメンバ
- 名前空間
- 名前空間エイリアス
この関数は、Q のスコープで宣言された無名ビットフィールドを、同じアクセスを持つデータメンバとして扱います。
クラスメンバと無名ビットフィールドのリフレクションは、宣言された順序で現れます。暗黙に宣言された特殊メンバは、ユーザ定義メンバの後に現れます。
引数
| r | - | 完全なクラス型または名前空間のリフレクション |
| ctx | - | アクセスコンテキスト |
戻り値
クラスメンバまたは名前空間メンバを表すリフレクション値の std::vector。
例外
std::meta::exception を送出します。ただし、std::meta::dealias(r) が評価コンテキストのある時点で完全なクラス型、または名前空間のいずれかを表す場合を除きます。
例
| このセクションは不完全です 理由:サンプルコードがありません |
関連項目
(C++26) |
リフレクションされたクラスのアクセス可能な直接基底を取得します (関数) |