std::is_array

出自cppreference.com
在標頭 <type_traits> 定義
template< class T >
struct is_array;
(C++11 起)

std::is_array一元類型特徵 (UnaryTypeTrait)

檢查 T 是否數組類型。如果 T 為數組類型,那麼提供的成員常量 value 等於 true。否則 value 等於 false

如果程序添加了 std::is_arraystd::is_array_v 的特化,那麼行為未定義。

模板形參

T - 要檢查的類型

輔助變量模板

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

繼承自 std::integral_constant

成員常量

value
[靜態]
如果 T 為數組類型那麼是 true,否則是 false
(公開靜態成員常量)

成員函數

operator bool
將對象轉換到 bool,返回 value
(公開成員函數)
operator()
(C++14)
返回 value
(公開成員函數)

成員類型

類型 定義
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() {}

參閱

檢查類型是否為有已知邊界的數組類型
(類模板) [編輯]
檢查類型是否為有未知邊界的數組類型
(類模板) [編輯]
(C++11)
獲取數組類型的維數
(類模板) [編輯]
(C++11)
獲取數組類型在指定維數的大小
(類模板) [編輯]
從給定數組類型移除一個維度
(類模板) [編輯]
從給定數組類型移除所有維度
(類模板) [編輯]