- meta[meta header]
- std::meta[meta namespace]
- class[meta id-type]
- cpp26[meta cpp]
namespace std::meta {
struct access_context;
}
access_contextは、members_of()やbases_of()などのメンバ取得関数で、アクセス制御のコンテキストを指定するためのクラスである。
#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));
}
}
- std::meta::nonstatic_data_members_of[link nonstatic_data_members_of.md]
- std::meta::identifier_of[link identifier_of.md]
- unchecked[link access_context/unchecked.md]
- unprivileged[link access_context/unprivileged.md]
unchecked:
secret
visible
unprivileged:
visible