std::meta::members_of
cppreference.net에서
| 헤더에 정의됨 <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) |
리플렉션된 클래스의 접근 가능한 직접 베이스를 얻습니다 (함수) |