2013-06-03 25 views
22

そのタイプを確認することは可能ですかTは任意のタイプとサイズのstd::arrayですか?テンプレートのC++ 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 {}; 
関連する問題