Skip to content

Latest commit

 

History

History
60 lines (45 loc) · 1.46 KB

File metadata and controls

60 lines (45 loc) · 1.46 KB

is_explicit_object_parameter

  • 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

処理系

参照