Podobne pytania:Szablon klasy specjalizacja z klasy szablon
- c++ nested template specialization with template class
- template class specialization with template class parameter
Rozważmy następujący kod:
template <typename T>
struct is_std_vector: std::false_type { };
template<typename ValueType>
struct is_std_vector<std::vector<ValueType>>: std::true_type { };
Dlaczego składnia specjalizacja taka klasa szablon prawidłowe? Poniższy wydaje się bardziej logiczne: szablon
template <typename T>
struct is_std_vector: std::false_type { };
template<> //--- because it is is_std_vector specialization
template<typename ValueType>
struct is_std_vector<std::vector<ValueType>>: std::true_type { };
sekunda wcale nie jest logiczna. 'template <>' oznacza, że specjalizujesz się wyłącznie w jednym typie 'T'. To co robisz, to częściowa specjalizacja (określasz nieskończony podzbiór T., tj. Tylko te, które spełniają formę 'std :: vector') –