部分特化是否允许拥有比主模板更多的模板参数?我的理解是,部分特化必须具有与主模板更少或相同数量的模板参数。
我正在阅读 C++ 模板(第 2 版),其中第 5.4 节(第 72 页)提到
template <typename T, std::size_t SZ>
struct MyClass<T[SZ]>{
static void print(){}
};
and
template <typename T, std::size_t SZ>
struct MyClass<T (&)[SZ]>{
static void print(){}
};
都是主模板的部分特化
template <typename T>
struct MyClass;
随附的代码运行良好。但这是正确的吗?部分特化是否可以比主模板拥有更多的模板参数?
编辑 - 该问题已被标记为与另一个问题重复,但那里的答案与此处的问题无关。这里的问题是关于模板参数的数量,评论和快速重读标准为我澄清了答案。
是的,部分特化确实可以比主模板拥有更多的模板参数。这种用途的一个典型例子是std::function
:
template <class T>
struct function;
template <class R, class... A>
struct function<R (A...)>
{
// std::function as we know it
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)