namespace std::meta {
consteval bool has_inaccessible_bases(info r, access_context ctx);
}
概要
クラスにアクセス不可能な基底クラスがあるかを判定する。
戻り値
指定したアクセスコンテキストでアクセスできない基底クラスが存在する場合にtrueを返す。
例
#include <meta>
struct Base1 {};
struct Base2 {};
// Base1はprivate継承、Base2はpublic継承
class Derived : private Base1, public Base2 {};
// すべての基底クラスがpublic
class PublicDerived : public Base1, public Base2 {};
int main() {
constexpr auto ctx = std::meta::access_context::unprivileged();
// Derivedにはprivate基底Base1があるため、外部からはアクセス不可
static_assert(std::meta::has_inaccessible_bases(^^Derived, ctx));
// PublicDerivedはすべての基底クラスがpublic
static_assert(!std::meta::has_inaccessible_bases(^^PublicDerived, ctx));
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) ✅ - Visual C++: ??