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

履歴 編集

class
<meta>

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

namespace std::meta {
  struct access_context;
}

概要

access_contextは、members_of()bases_of()などのメンバ取得関数で、アクセス制御のコンテキストを指定するためのクラスである。

静的メンバ関数

名前 説明
current 呼び出し元のアクセス権に従うコンテキストを返す
unprivileged publicメンバのみにアクセス可能なコンテキストを返す
unchecked すべてのメンバにアクセス制限なしでアクセス可能なコンテキストを返す

メンバ関数

名前 説明
scope アクセスコンテキストのスコープのリフレクションを返す
designating_class 指定クラスのリフレクションを返す
via 指定したクラスを経由したアクセスコンテキストを返す

#include <meta>
#include <print>

class MyClass {
  int secret = 42;
public:
  int visible = 1;
};

int main() {
  // unchecked: すべてのメンバにアクセス
  std::println("unchecked:");
  template for (constexpr auto m :
      std::define_static_array(std::meta::nonstatic_data_members_of(
          ^^MyClass, std::meta::access_context::unchecked()))) {
    std::println("  {}", std::meta::identifier_of(m));
  }

  // unprivileged: publicのみ
  std::println("unprivileged:");
  template for (constexpr auto m :
      std::define_static_array(std::meta::nonstatic_data_members_of(
          ^^MyClass, std::meta::access_context::unprivileged()))) {
    std::println("  {}", std::meta::identifier_of(m));
  }
}

出力

unchecked:
  secret
  visible
unprivileged:
  visible

バージョン

言語

  • C++26

処理系

参照