最終更新日時(UTC):
が更新

履歴 編集

function
<meta>

std::meta::define_aggregate(C++26)

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

処理系

関連項目

参照