namespace std::meta {
template <reflection_range R = std::initializer_list<info>>
consteval info define_aggregate(info type_class, R&& members);
}
概要
不完全なクラス型を、指定されたデータメンバを持つ集成体として定義する。
戻り値
不完全なクラス型type_classを、membersで指定されたデータメンバを持つ集成体として定義し、完全型となったクラスのリフレクションを返す。
備考
type_classは不完全なクラス型を表すリフレクションでなければならない。membersの各要素はis_data_member_spec()がtrueを返すリフレクションでなければならない。
例
#include <meta>
#include <print>
struct MyStruct;
consteval {
std::meta::define_aggregate(^^MyStruct, {
std::meta::data_member_spec(^^int, {.name = "id"}),
std::meta::data_member_spec(^^double, {.name = "value"})
});
}
int main() {
MyStruct s{42, 3.14};
std::println("id={}, value={}", s.id, s.value);
}
出力
id=42, value=3.14
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) ✅ - Visual C++: ??