2013-06-03 11 views
22

È possibile verificare che il tipo T sia un tipo e una dimensione arbitrari std::array?C++ 11 is_same tipo tratto per i modelli

posso verificare la presenza di una particolare matrice, per esempio:

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

Ma vorrei controllare che T è alcuna istanza di std::array. Qualcosa di simile al di sotto (che, ovviamente, non può essere compilato):

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

C'è un modo per raggiungere questo obiettivo (forse non usando is_same)?

+0

È possibile scrivere un generico 'is_same_template' e dire' is_same_template '. Il compilatore deve però supportare le regole del nome della classe iniettate C++ 11. –

risposta

32

si deve scrivere il proprio, ma è semplice:

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 {}; 
Problemi correlati