- meta[meta header]
- std::meta[meta namespace]
- function[meta id-type]
- cpp26[meta cpp]
namespace std::meta {
consteval bool is_explicit_object_parameter(info r);
}- info[link info.md]
関数パラメータが明示的オブジェクトパラメータ(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());
}- std::meta::parameters_of[link parameters_of.md]
- C++26
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) [mark verified] - Visual C++: ??