types_is_reflection (반영 타입 판별)
std::is_reflection은 주어진 타입 T가 C++26 반영(reflection) 라이브러리의 핵심 타입인 std::meta::info인지 판별하는 타입 특성(type trait)이에요. 이 특성은 컴파일 타임에 상수 value를 제공하며, const나 volatile 한정이 붙은 경우에도 동일하게 판별해요. 반영 프로그래밍을 구현할 때 메타데이터 타입을 검증하는 용도로 사용할 수 있어요.
출처: cppreference
본문
<type_traits> 헤더에 정의되어 있어요.
Defined in header <type_traits> |
|
|
template < class T > struct is_reflection; |
|
(since C++26) |
std::is_reflection은 단항 타입 특성(UnaryTypeTrait)이에요.
T가 std::meta::info 타입인지 확인해요. T가 std::meta::info, const std::meta::info, volatile std::meta::info, 또는 const volatile std::meta::info 타입이라면 멤버 상수 value는 true가 돼요. 그 외의 경우 value는 false예요.
프로그램이 std::is_reflection 또는 std::is_reflection_v에 대한 특수화를 추가하면 동작이 정의되지 않아요.
템플릿 매개변수
헬퍼 변수 템플릿
template < class T > constexpr bool is_reflection_v = is_reflection<T>::value; |
|
(since C++26) |
std::integral_constant에서 상속
멤버 상수
value [static] |
T가 std::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