types_is_array

types_is_array (배열 타입 판별)

std::is_array는 주어진 타입 T가 배열 타입인지 확인하는 C++11부터 제공된 유형 특성(type trait)입니다. 이 특성은 value라는 정적 멤버 상수를 통해 결과를 알려 주며, 배열 타입이면 true, 아니면 false가 됩니다. 프로그램에서 std::is_arraystd::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가 배열 타입인지 검사하며, 배열 타입이라면 valuetrue와 같고, 그렇지 않으면 false와 같아요.

템플릿 매개변수

T - 확인할 타입

헬퍼 변수 템플릿

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