- meta[meta header]
- std::meta[meta namespace]
- function[meta id-type]
- cpp26[meta cpp]
namespace std::meta {
consteval info type_of(info r);
}- info[link info.md]
リフレクションが表すエンティティの型のリフレクションを取得する。
以下のいずれかを表すリフレクションを受け取れる:
- 値、オブジェクト、変数、または関数(未推論のプレースホルダ型を含まず、コンストラクタ・デストラクタでないもの)
- 列挙子
- メンバ変数
- 無名ビットフィールド
- 直接基底クラス関係
- データメンバ仕様
rが上記のいずれかを表す場合、対応する型のリフレクションを返す。列挙子の場合は列挙型のリフレクション、直接基底クラス関係の場合は基底クラスの型のリフレクションを返す。
rが上記のいずれも表さない場合(型、名前空間、テンプレート、コンストラクタ、デストラクタ、未推論のプレースホルダ戻り値型を持つ関数など)、std::meta::exception例外を送出する。
#include <meta>
int x = 42;
int main() {
static_assert(std::meta::type_of(^^x) == ^^int);
}- C++26
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) [mark verified] - Visual C++: ??