7
相關問題:模板類專業化與模板類
- c++ nested template specialization with template class
- template class specialization with template class parameter
考慮下面的代碼:
template <typename T>
struct is_std_vector: std::false_type { };
template<typename ValueType>
struct is_std_vector<std::vector<ValueType>>: std::true_type { };
爲什麼是這樣的模板類專業化的語法是否正確? 下面似乎更邏輯:
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 { };
第二個根本不合邏輯。 'template <>'意味着你明確地只專注於一種'T'類型。你正在做的是部分特化(你指定了T的無限子集,即只有那些滿足'std :: vector'形式的子集) –