std::meta::parent_of
cppreference.net에서
| 헤더 <meta>
|
||
consteval std::meta::info parent_of( std::meta::info r );
|
(C++26부터) | |
r이 나타내는 선언을 포함하는 가장 작은 클래스, 열거형, 함수 또는 네임스페이스 범위를 결정합니다. 해당 클래스/열거형/함수/네임스페이스의 리플렉션을 반환합니다.
r이 익명 공용체의 비정적 데이터 멤버 또는 이름 없는 비트 필드를 나타내는 경우, 결과는 해당 공용체를 나타냅니다.
r이 직접 기본 클래스 관계(즉, std::meta::bases_of(rc, ctx)의 요소)를 나타내는 경우, 결과는 관계에서 파생 클래스를 나타냅니다.
매개변수
| r | - | 리플렉션 값 |
반환값
r이 나타내는 선언을 포함하는 범위에 있는 엔터티의 리플렉션입니다.
예외
std::meta::exception을 던집니다. 단, std::meta::has_parent(r)이 true인 경우는 제외됩니다.
예제
이 코드 실행
#include <meta>
struct I {};
struct F : I
{
union { int o; };
enum N { A };
};
constexpr auto ctx = std::meta::access_context::current();
static_assert(std::meta::parent_of(^^F) == ^^::);
static_assert(std::meta::parent_of(std::meta::bases_of(^^F, ctx)[0]) == ^^F);
static_assert(std::meta::is_union_type(std::meta::parent_of(^^F::o)));
static_assert(std::meta::parent_of(^^F::N) == ^^F);
static_assert(std::meta::parent_of(^^F::A) == ^^F::N);
int main() {}
참고 항목
(C++26) |
리플렉션된 엔터티가 범위 안에 포함되어 있는지 확인합니다. (함수) |