std::is_array (3) - Linux Manuals

std::is_array: std::is_array


std::is_array - std::is_array


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

Checks whether T is an array type. Provides the member constant value which is equal to true, if T is an array type. Otherwise, value is equal to false.

Template parameters

T - a type to check

Helper variable template

template< class T > (since C++17)
inline constexpr bool is_array_v = is_array<T>::value;

Inherited from std::integral_constant

Member constants

value true if T is an array type , false otherwise
         (public static member constant)

Member functions

              converts the object to bool, returns value
operator bool (public member function)

operator() returns value
              (public member function)

Member types

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

Possible implementation

  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 {};


// Run this code

  #include <iostream>
  #include <type_traits>

  class A {};

  int main()
      std::cout << std::boolalpha;
      std::cout << std::is_array<A>::value << '\n';
      std::cout << std::is_array<A[]>::value << '\n';
      std::cout << std::is_array<A[3]>::value << '\n';
      std::cout << std::is_array<float>::value << '\n';
      std::cout << std::is_array<int>::value << '\n';
      std::cout << std::is_array<int[]>::value << '\n';
      std::cout << std::is_array<int[3]>::value << '\n';



See also

is_bounded_array checks if a type is an array type of known bound
                   (class template)

is_unbounded_array checks if a type is an array type of unknown bound
                   (class template)

rank obtains the number of dimensions of an array type
                   (class template)

extent obtains the size of an array type along a specified dimension
                   (class template)

remove_extent removes one extent from the given array type
                   (class template)

remove_all_extents removes all extents from the given array type
                   (class template)