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

履歴 編集

function template
<meta>

# std::define_static_object(C++26)

    namespace std {
      template <class T>
      consteval const remove_cvref_t<T>* define_static_object(T&& t);
    }

## 概要

コンパイル時に計算したオブジェクトを静的ストレージに配置し、そのポインタを返す。

## 戻り値

`t`のコピーを保持する静的ストレージ上のオブジェクトへのポインタを返す。

## 例

    #include <meta>
    #include <print>

    struct Config {
      int width;
      int height;
    };

    int main() {
      constexpr auto* p = std::define_static_object(Config{1920, 1080});
      std::println("{}x{}", p->width, p->height);
    }

### 出力

    1920x1080

## バージョン

### 言語

- C++26

### 処理系

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

## 関連項目

- `define_static_string`
- `define_static_array`

## 参照

- P3491R3 `define_static_{string,object,array}`