- meta[meta header]
- std::meta[meta namespace]
- function[meta id-type]
- cpp26[meta cpp]
namespace std::meta {
consteval std::vector<info> nonstatic_data_members_of(info type, access_context ctx);
}- info[link info.md]
- access_context[link access_context.md]
クラスのメンバ変数のリフレクションを取得する。
typeが完全型のクラスを表す場合、アクセスコンテキストctxでアクセス可能なメンバ変数のリフレクションを宣言順に格納したvectorを返す。
rが完全型のクラスを表さない場合、std::meta::exception例外を送出する。
#include <meta>
#include <print>
struct Point {
int x;
int y;
};
int main() {
Point p{10, 20};
template for (constexpr auto m :
std::define_static_array(std::meta::nonstatic_data_members_of(^^Point,
std::meta::access_context::unchecked()))) {
std::println("{} = {}", std::meta::identifier_of(m), p.[:m:]);
}
}- std::meta::access_context[link access_context.md]
- unchecked[link access_context/unchecked.md]
- std::meta::identifier_of[link identifier_of.md]
x = 10
y = 20
- C++26
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) [mark verified] - Visual C++: ??