2013-06-03 60 views
22

是否可以檢查該類型T是否爲任意類型和大小的std::arrayC++ 11用於模板的is_same類型特徵

我可以檢查一個特定的陣列,例如:

is_same<T, std::array<int,5>>::value 

但我想檢查Tstd::array任何實例。類似下面(其中,當然,不編譯):

is_same<T, std::array>::value 

有沒有辦法實現這個(也許不是使用is_same)?

+0

你可以寫一個通用的'is_same_template'說'is_same_template '。編譯器必須支持C++ 11注入的類名稱規則。 –

回答

32

你必須寫你自己的,但其實很簡單:

template<typename> 
struct is_std_array : std::false_type {}; 

template<typename T, std::size_t N> 
struct is_std_array<std::array<T,N>> : std::true_type {};