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

履歴 編集

function
<meta>

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

namespace std::meta {
  consteval bool is_accessible(info r, access_context ctx);
}

概要

指定したアクセスコンテキストでアクセス可能かを判定する。

任意のリフレクションを受け取れる。クラスメンバや直接基底クラス関係以外のリフレクション(型や名前空間など)に対しては常にtrueを返す。

戻り値

rがクラスメンバまたは直接基底クラス関係を表す場合、アクセスコンテキストctxでアクセス可能であればtrueを返す。それ以外のリフレクションに対してはtrueを返す。

例外

rがクラスメンバを表し、そのメンバの親クラスが不完全な場合、または不完全な派生クラスを含む基底クラス関係を表す場合、std::meta::exception例外を送出する。

#include <meta>

class C {
  int secret;
public:
  int visible;
};

consteval bool check() {
  auto members = std::meta::nonstatic_data_members_of(
      ^^C, std::meta::access_context::unchecked());
  auto ctx = std::meta::access_context::unprivileged();
  return !std::meta::is_accessible(members[0], ctx)  // secret: private
      && std::meta::is_accessible(members[1], ctx);  // visible: public
}

int main() {
  static_assert(check());
}

出力

バージョン

言語

  • C++26

処理系

参照