#ifndef _LIBCPP___TYPE_TRAITS_RANK_H
#define _LIBCPP___TYPE_TRAITS_RANK_H
#include <__config>
#include <__type_traits/integral_constant.h>
#include <cstddef>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
_LIBCPP_BEGIN_NAMESPACE_STD
#if __has_builtin(__array_rank) && 0
template <class _Tp>
struct rank : integral_constant<size_t, __array_rank(_Tp)> {};
#else
template <class _Tp>
struct _LIBCPP_TEMPLATE_VIS rank : public integral_constant<size_t, 0> { … };
rank<_Tp[]>;
rank<_Tp[_Np]>;
#endif
#if _LIBCPP_STD_VER >= 17
rank_v;
#endif
_LIBCPP_END_NAMESPACE_STD
#endif