[英]Template class specialization with template class
相关问题:
请考虑以下代码:
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 { };
类模板部分特化语法紧密反映函数模板语法。 实际上,排序类模板部分特化的规则基于函数模板部分排序。
使用vector<T>
编写函数的方法是:
template <class T>
void is_std_vector(vector<T> ) { ... }
所以你在vector<T>
上编写专门化的方式是一样的:
template <class T>
class is_std_vector<vector<T>> { ... };
匹配的专业化is_std_vector
会尝试推断T
的vector<T>
从某种类型的论证A
,所以它是一个很大的意义,他们正在写相同的方式。
对于完全特化,我们使用template <>
作为占位符信号,使完全特化看起来类似于部分特化。 我不确定在这种特殊情况下额外template <>
用途是什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.