Namespaces
Variants

std::meta::bases_of

ja.cppreference.net より
< cpp | meta
 
 
 
リフレクションライブラリ
 
リフレクションの型と問い合わせ
リフレクション問い合わせ
リフレクションレイアウト問い合わせ
型プロパティ
型プロパティ問い合わせ
 
ヘッダ <meta>
consteval std::vector<std::meta::info>
    bases_of( std::meta::info type, std::meta::access_context ctx );
で定義 (C++26 以降)

std::vector を返します。このベクタには、基本指定子に対応するリフレクションが含まれ、これはtypeで表されるクラスの基本指定子を、アクセスコンテキスト ctx でフィルタリングしたものです。

C をstd::meta::dealias(type)で表されるクラス型とします。結果の各リフレクション値 b は、アクセス可能な直接基底クラス関係Cを表し、これはCとその基底クラスの一つとの間の関係です。アクセス可能性はstd::meta::is_accessible(b, ctx)による場合と同様に決定されます。リフレクション値は、対応する基底クラスが基底節に現れる順序で現れます(これはCの定義内のものです)。

直接基底クラス関係は、通常、順序対 (D, B) として表されます。ここで、

  • D は派生クラスです。
  • B は、D の定義内の基本指定子によって指定された直接基底クラスです。

関数 std::meta::parent_of および std::meta::type_of は、それぞれこの関係の派生クラスと基底クラスを返します。

引数

type - 完全クラス型またはその型エイリアスを表すリフレクション値
ctx - アクセスコンテキスト

戻り値

直接基底クラス関係を表すリフレクション値の std::vector。

例外

std::meta::exception をスローします。ただし、std::meta::dealias(type) が評価コンテキスト内のある時点で完全となるクラス型を表さない場合。

ノート

type が共用体型を表す場合、結果は空のベクタです。

例

関連項目

(C++26)
リフレクションが直接基底クラス関係
を表すかどうかをチェックする (関数)