Namespaces
Variants

std::meta::parent_of

cppreference.net에서
< cpp | meta
 
 
 
리플렉션 라이브러리
 
리플렉션 형식 및 쿼리
리플렉션 쿼리
리플렉션 레이아웃 쿼리
형식 속성
형식 속성 쿼리
 
헤더 <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() {}

참고 항목

리플렉션된 엔터티가 범위 안에 포함되어 있는지 확인합니다.
(함수)