namespace std::meta {
consteval bool is_explicit_object_parameter(info r);
}
概要
関数パラメータが明示的オブジェクトパラメータ(this引数)であるかを判定する。
戻り値
rが関数パラメータを表し、かつ明示的オブジェクトパラメータ(this引数)である場合にtrueを返す。そうでなければfalseを返す。
例
#include <meta>
struct S {
void f(this S& self) {} // 明示的オブジェクトパラメータ
void g(int x) {} // 通常のパラメータ
};
consteval bool check() {
auto f_params = std::meta::parameters_of(^^S::f);
auto g_params = std::meta::parameters_of(^^S::g);
return std::meta::is_explicit_object_parameter(f_params[0])
&& !std::meta::is_explicit_object_parameter(g_params[0]);
}
int main() {
static_assert(check());
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) ✅ - Visual C++: ??