Ash*_*tti 4 c++ c++11 c++14 c++17
是否允许部分专业化具有比主要模板更多的模板参数?我的理解是,部分专业化必须具有与主要模板相比更少或相同数量的模板参数。
我正在阅读C ++模板(第二版),在5.4节(第72页)中提到
template <typename T, std::size_t SZ>
struct MyClass<T[SZ]>{
static void print(){}
};
Run Code Online (Sandbox Code Playgroud)
和
template <typename T, std::size_t SZ>
struct MyClass<T (&)[SZ]>{
static void print(){}
};
Run Code Online (Sandbox Code Playgroud)
都是主模板的部分专业化
template <typename T>
struct MyClass;
Run Code Online (Sandbox Code Playgroud)
随附的代码工作正常。但这是正确的吗?局部专业化可以具有比主要模板更多的模板参数吗?
编辑-该问题已被标记为另一个问题的重复,但此处的答案与该问题无关。这里的问题困扰着模板参数和注释的数量,并且快速重新阅读标准为我澄清了答案。
是的,部分专业化确实可以比主要模板具有更多的模板参数。这种用法的典型示例是std::function:
template <class T>
struct function;
template <class R, class... A>
struct function<R (A...)>
{
// std::function as we know it
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |