types_is_reflection

types_is_reflection (반영 타입 판별)

std::is_reflection은 주어진 타입 T가 C++26 반영(reflection) 라이브러리의 핵심 타입인 std::meta::info인지 판별하는 타입 특성(type trait)이에요. 이 특성은 컴파일 타임에 상수 value를 제공하며, constvolatile 한정이 붙은 경우에도 동일하게 판별해요. 반영 프로그래밍을 구현할 때 메타데이터 타입을 검증하는 용도로 사용할 수 있어요.

출처: cppreference

본문

<type_traits> 헤더에 정의되어 있어요.

Defined in header <type_traits>
template < class T > struct is_reflection; (since C++26)

std::is_reflection은 단항 타입 특성(UnaryTypeTrait)이에요.

Tstd::meta::info 타입인지 확인해요. Tstd::meta::info, const std::meta::info, volatile std::meta::info, 또는 const volatile std::meta::info 타입이라면 멤버 상수 valuetrue가 돼요. 그 외의 경우 valuefalse예요.

프로그램이 std::is_reflection 또는 std::is_reflection_v에 대한 특수화를 추가하면 동작이 정의되지 않아요.

템플릿 매개변수

T - 확인할 타입

헬퍼 변수 템플릿

template < class T > constexpr bool is_reflection_v = is_reflection<T>::value; (since C++26)

std::integral_constant에서 상속

멤버 상수

value [static] Tstd::meta::info 타입(cv 한정 포함)이면 true, 아니면 false (공용 정적 멤버 상수)

멤버 함수

operator bool 객체를 bool로 변환하고 value를 반환해요 (공용 멤버 함수)
operator() (C++14) value를 반환해요 (공용 멤버 함수)

멤버 타입

Type Definition
value_type bool
type std::integral_constant<bool, value>

가능한 구현

template < class T > struct is_reflection : std :: is_same < std :: meta :: info , std :: remove_cv_t < T >> {};

참고 사항

Feature-test macro Value Std Feature
__cpp_lib_reflection 202506L (C++26) <meta>: Reflection library support.

예제

#include <meta>
#include <type_traits>

static_assert(std::is_reflection_v<decltype(^^::)>);
static_assert(std::is_reflection_v<std::add_cv_t<std::meta::info>>);

int main() {}

같이 보기

is_void (C++11) 타입이 void인지 확인해요 (클래스 템플릿)
is_array (C++11) 타입이 배열 타입인지 확인해요 (클래스 템플릿)
is_pointer (C++11) 타입이 포인터 타입인지 확인해요 (클래스 템플릿)
is_enum (C++11) 타입이 열거형 타입인지 확인해요 (클래스 템플릿)
is_union (C++11) 타입이 공용체 타입인지 확인해요 (클래스 템플릿)
is_class (C++11) 타입이 비공용체 클래스 타입인지 확인해요 (클래스 템플릿)
is_function (C++11) 타입이 함수 타입인지 확인해요 (클래스 템플릿)
is_object (C++11) 타입이 객체 타입인지 확인해요 (클래스 템플릿)
is_reflection_type (C++26) 반영된 타입이 std::meta::info인지 확인해요 (함수)

더 알아보기 (Learn more)

cppreference