- meta[meta header]
- std::meta[meta namespace]
- function[meta id-type]
- cpp26[meta cpp]
namespace std::meta {
consteval bool is_protected(info r);
}- info[link info.md]
protectedアクセスであるかを判定する。
rがクラスメンバまたは基底クラス関係を表し、かつprotectedアクセスである場合にtrueを返す。
#include <meta>
struct S {
int pub;
protected:
int prot;
private:
int priv;
};
consteval bool check() {
auto members = std::meta::nonstatic_data_members_of(
^^S, std::meta::access_context::unchecked());
return std::meta::is_public(members[0])
&& std::meta::is_protected(members[1])
&& std::meta::is_private(members[2]);
}
int main() {
static_assert(check());
}- std::meta::nonstatic_data_members_of[link nonstatic_data_members_of.md]
- std::meta::is_public[link is_public.md]
- std::meta::is_private[link is_private.md]
- std::meta::access_context[link access_context.md]
- unchecked[link access_context/unchecked.md]
- C++26
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) [mark verified] - Visual C++: ??