概要
エイリアスを解決して元のエンティティのリフレクションを取得する。
戻り値
rが型エイリアスまたは名前空間エイリアスを表す場合、エイリアス先のリフレクションを返す。そうでなければ(エイリアスでない場合や、エンティティを表さない場合を含めて)rをそのまま返す。
例外
投げない。
例
#include <meta>
using MyInt = int;
int main() {
static_assert(^^MyInt != ^^int); // 型の別名は区別される
static_assert(std::meta::dealias(^^MyInt) == ^^int); // dealias()で元の型を取得
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) ✅ - Visual C++: ??
参照
- P2996R13 Reflection for C++26
- LWG Issue 4427.
meta::dealiasneeds to work with things that aren't entities- C++26で、
rがエンティティを表さない場合に例外を送出するのではなく、rをそのまま返す(恒等関数として振る舞う)よう変更された。直接基底クラス関係など非エンティティのリフレクションに対する正当な用途を可能にするため
- C++26で、