12 #include <type_traits>
25 template <
class array_t,
class T>
struct is_array_of_t : std::false_type { };
28 template <
class T>
struct is_array_of_t<const T[], T> : std::true_type { };
29 template <
class T>
struct is_array_of_t< volatile T[], T> : std::true_type { };
30 template <
class T>
struct is_array_of_t<const volatile T[], T> : std::true_type { };
32 template <
class T,
size_t N>
struct is_array_of_t< T[N], T> : std::true_type { };
33 template <
class T,
size_t N>
struct is_array_of_t<const T[N], T> : std::true_type { };
34 template <
class T,
size_t N>
struct is_array_of_t< volatile T[N], T> : std::true_type { };
35 template <
class T,
size_t N>
struct is_array_of_t<const volatile T[N], T> : std::true_type { };
37 template <
class T,
size_t N>
struct is_array_of_t< T(&)[N], T> : std::true_type { };
38 template <
class T,
size_t N>
struct is_array_of_t<const T(&)[N], T> : std::true_type { };
39 template <
class T,
size_t N>
struct is_array_of_t< volatile T(&)[N], T> : std::true_type { };
40 template <
class T,
size_t N>
struct is_array_of_t<const volatile T(&)[N], T> : std::true_type { };
44 template<
class array_t,
class T>