最終更新日時: 2026年05月07日 12時33分06秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<meta>

# std::meta::data_member_spec(C++26)

    namespace std::meta {
      consteval info data_member_spec(info type, data_member_options options);
    }

## 概要

データメンバの仕様を作成する。`define_aggregate()`で使用するデータメンバの仕様を表すリフレクションを返す。

## 戻り値

指定された型`type`とオプション`options`に基づくデータメンバの仕様を表すリフレクションを返す。

## 例外

以下のいずれかの場合、`std::meta::exception` 例外を送出する：

- `type`がオブジェクト型または参照型を表さない場合
- `options.name`に値があり、有効な識別子でない場合
- `options.name`に値がなく、`options.bit_width`にも値がない場合

## 例

    #include <meta>

    struct S;

    consteval {
      std::meta::define_aggregate(^^S, {
        std::meta::data_member_spec(^^int, {.name = "x"}),
        std::meta::data_member_spec(^^double, {.name = "y"})
      });
    }

    int main() {
      S s{1, 2.0};
      static_assert(std::meta::is_data_member_spec(
        std::meta::data_member_spec(^^int, {.name = "z"})));
    }

### 出力

## バージョン

### 言語

- C++26

### 処理系

- Clang: ??
- GCC: 16 (`-freflection` オプション指定) ✅
- Visual C++: ??

## 関連項目

- `data_member_options`
- `define_aggregate`

## 参照

- P2996R13 Reflection for C++26