namespace std::meta {
struct access_context;
}
概要
access_contextは、members_of()やbases_of()などのメンバ取得関数で、アクセス制御のコンテキストを指定するためのクラスである。
静的メンバ関数
| 名前 | 説明 |
|---|---|
current |
呼び出し元のアクセス権に従うコンテキストを返す |
unprivileged |
publicメンバのみにアクセス可能なコンテキストを返す |
unchecked |
すべてのメンバにアクセス制限なしでアクセス可能なコンテキストを返す |
メンバ関数
| 名前 | 説明 |
|---|---|
scope |
アクセスコンテキストのスコープのリフレクションを返す |
designating_class |
指定クラスのリフレクションを返す |
via |
指定したクラスを経由したアクセスコンテキストを返す |
例
#include <meta>
#include <print>
class MyClass {
int secret = 42;
public:
int visible = 1;
};
int main() {
// unchecked: すべてのメンバにアクセス
std::println("unchecked:");
template for (constexpr auto m :
std::define_static_array(std::meta::nonstatic_data_members_of(
^^MyClass, std::meta::access_context::unchecked()))) {
std::println(" {}", std::meta::identifier_of(m));
}
// unprivileged: publicのみ
std::println("unprivileged:");
template for (constexpr auto m :
std::define_static_array(std::meta::nonstatic_data_members_of(
^^MyClass, std::meta::access_context::unprivileged()))) {
std::println(" {}", std::meta::identifier_of(m));
}
}
出力
unchecked:
secret
visible
unprivileged:
visible
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) ✅ - Visual C++: ??