最終更新日時(UTC):
が更新

履歴 編集

function
<meta>

std::meta::is_override(C++26)

namespace std::meta {
  consteval bool is_override(info r);
}

概要

基底クラスの仮想関数をオーバーライドしているメンバ関数であるかを判定する。overrideキーワードの有無に関係なく、意味的にオーバーライドしていればtrueを返す。

戻り値

rが別のメンバ関数をオーバーライドしているメンバ関数を表す場合にtrueを返す。

#include <meta>

struct Base {
  virtual void f() {}
  virtual void g() {}
};

struct Derived : Base {
  void f() override {}  // overrideキーワードあり
  void g() {}           // overrideキーワードなしだが、オーバーライドしている
};

int main() {
  // 基底クラスの仮想関数はオーバーライドではない
  static_assert(!std::meta::is_override(^^Base::f));

  // overrideキーワードの有無に関係なく、オーバーライドしていればtrue
  static_assert(std::meta::is_override(^^Derived::f));
  static_assert(std::meta::is_override(^^Derived::g));
}

出力

バージョン

言語

  • C++26

処理系

参照