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'形式的子集) –