types_is_array (배열 타입 판별)
std::is_array는 주어진 타입 T가 배열 타입인지 확인하는 C++11부터 제공된 유형 특성(type trait)입니다. 이 특성은 value라는 정적 멤버 상수를 통해 결과를 알려 주며, 배열 타입이면 true, 아니면 false가 됩니다. 프로그램에서 std::is_array나 std::is_array_v에 대한 특수화를 추가하면 동작이 정의되지 않으므로 주의해야 해요.
출처: cppreference
본문
정의
<type_traits> 헤더에 정의되어 있어요.
Defined in header <type_traits> |
|
|
template < class T > struct is_array ; |
|
(since C++11) |
std::is_array는 UnaryTypeTrait입니다. T가 배열 타입인지 검사하며, 배열 타입이라면 value가 true와 같고, 그렇지 않으면 false와 같아요.
템플릿 매개변수
헬퍼 변수 템플릿
template < class T > constexpr bool is_array_v = is_array < T >:: value ; |
|
(since C++17) |
std::integral_constant로부터 상속됨
멤버 상수
value [static] |
T가 배열 타입이면 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_array : std :: false_type {};
template < class T > struct is_array < T [] > : std :: true_type {};
template < class T , std :: size_t N > struct is_array < T [ N ] > : std :: true_type {};
예제
#include <array>
#include <type_traits>
class A {};
static_assert(std::is_array<A>::value == false);
static_assert(std::is_array<A[]>::value == true);
static_assert(std::is_array<A[3]>::value == true);
static_assert(std::is_array<float>::value == false);
static_assert(std::is_array<int>::value == false);
static_assert(std::is_array<int[]>::value == true);
static_assert(std::is_array<int[3]>::value == true);
static_assert(std::is_array<std::array<int, 3>>::value == false);
int main() {}
같이 보기
is_bounded_array (C++20) |
크기가 알려진 배열 타입인지 확인해요 (클래스 템플릿) |
is_unbounded_array (C++20) |
크기가 알려지지 않은 배열 타입인지 확인해요 (클래스 템플릿) |
rank (C++11) |
배열 타입의 차원 수를 얻어요 (클래스 템플릿) |
extent (C++11) |
배열 타입의 특정 차원 크기를 얻어요 (클래스 템플릿) |
remove_extent (C++11) |
주어진 배열 타입에서 한 차원을 제거해요 (클래스 템플릿) |
remove_all_extents (C++11) |
주어진 배열 타입에서 모든 차원을 제거해요 (클래스 템플릿) |
is_array_type (C++26) |
반영된 타입이 배열 타입인지 확인해요 (함수) |
더 알아보기 (Learn more)
cppreference