namespace std::meta {
consteval std::vector<info> bases_of(info type, access_context ctx);
}
概要
クラスの直接基底クラスのリフレクションを取得する。
戻り値
typeが完全型のクラスを表す場合、アクセスコンテキストctxでアクセス可能な直接基底クラス関係のリフレクションを格納したstd::vectorオブジェクトを返す。
例外
rが完全型のクラスを表さない場合、std::meta::exception例外を送出する。
備考
- C++では多重継承ができるため、基底クラスは複数存在する可能性がある
例
#include <meta>
#include <print>
struct A {};
struct B {};
struct C : A, B {};
int main() {
// クラスCの直接基底クラスを取得して出力
template for (constexpr auto b :
std::define_static_array(std::meta::bases_of(^^C, std::meta::access_context::unchecked()))) {
std::println("{}", std::meta::display_string_of(std::meta::type_of(b)));
}
}
出力
A
B
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) ✅ - Visual C++: ??