Skip to content

Latest commit

 

History

History
86 lines (71 loc) · 2.58 KB

File metadata and controls

86 lines (71 loc) · 2.58 KB

access_context

  • meta[meta header]
  • std::meta[meta namespace]
  • class[meta id-type]
  • cpp26[meta cpp]
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));
  }
}
  • std::meta::nonstatic_data_members_of[link nonstatic_data_members_of.md]
  • std::meta::identifier_of[link identifier_of.md]
  • unchecked[link access_context/unchecked.md]
  • unprivileged[link access_context/unprivileged.md]

出力

unchecked:
  secret
  visible
unprivileged:
  visible

バージョン

言語

  • C++26

処理系

参照