Namespaces
Variants

std::meta::members_of

cppreference.net에서
< cpp | meta
 
 
 
리플렉션 라이브러리
 
리플렉션 타입 및 쿼리
리플렉션 쿼리
리플렉션 레이아웃 쿼리
타입 속성
타입 속성 쿼리
 
헤더에 정의됨 <meta>
consteval std::vector<std::meta::info>
    members_of( std::meta::info r, std::meta::access_context ctx );
(C++26부터)

다음을 반환합니다: std::vector 클래스 타입 또는 네임스페이스 (r)의 멤버들의 리플렉션을 포함하며, 접근 컨텍스트 ctx에 의해 필터링된 것입니다.

각 리플렉션 m는 결과에서 접근 가능한 멤버를 나타내며, 이 멤버는 적격 선언을 가지며 표현 가능 (아래 참조)합니다. 접근 가능성은 마치 std::meta::is_accessible(m, ctx)에 의해 결정된 것처럼 결정됩니다.

Q가 r로 표현되는 클래스 타입 또는 네임스페이스라고 하자.

선언은 적격이면 다음 모든 요구 사항을 충족합니다:

  • 이는 Q의 범위에 있습니다. (예를 들어, 블록 범위 함수 선언은 적격이 아닙니다.)
  • 친구 선언이 아닙니다.
  • 이것은 클로저 타입의 선언이 아닙니다.
  • (부분 또는 전체) 템플릿 특수화의 선언이 아닙니다.
  • 만약 Q가 클로저 타입이 아닌 클래스 타입인 경우, 선언은 Q의 직접 멤버를 도입하며, 이는 변형 멤버의 중첩 익명 공용체의 Q이 아닙니다.
  • 만약 Q가 클로저 타입인 경우, 선언은 함수 호출 연산자 또는 함수 호출 연산자 템플릿을 도입합니다.

클로저 타입 Q의 다른 멤버 선언이 적격인지 여부는 구현 정의입니다.

members_of 호출 이전의 선언만 고려됩니다.

멤버는 표현 가능인 경우 다음 중 하나입니다:

  • 클래스 또는 열거형 타입
  • 타입 별칭
  • 클래스 템플릿, 함수 템플릿, 변수 템플릿, 별칭 템플릿 또는 개념
  • 타입에 추론되지 않은 플레이스홀더 타입
  • 을 포함하지 않는 변수 또는 참조 F함수
  • 의 경우: F의 타입
  • 이 추론되지 않은 플레이스홀더 타입을 포함하지 않음; F의 제약 조건(있는 경우)
  • 이 충족됨; 그리고 F만약 가 잠재적 소멸자
  • 인 경우, 선택된 소멸자임
  • 데이터 멤버
  • 네임스페이스

네임스페이스 별칭 Q이 함수는

의 범위에서 선언된 이름 없는 비트 필드를 동일한 접근을 가진 데이터 멤버로 취급합니다.

참고 항목

r - 완전한 클래스 타입 또는 네임스페이스의 리플렉션
ctx - 접근 컨텍스트

반환값

클래스 멤버 또는 네임스페이스 멤버를 나타내는 리플렉션 값의 std::vector입니다.

예외

std::meta::exception을 던집니다. 단, std::meta::dealias(r)이 평가 컨텍스트의 어떤 지점에서 완전한 클래스 타입 또는 네임스페이스를 나타내지 않는 경우에 한합니다.

예제

참고 항목

(C++26)
리플렉션된 클래스의 접근 가능한 직접 베이스를 얻습니다
(함수)