【发布时间】:2020-11-22 22:27:58
【问题描述】:
我想使用部分模板专业化,但似乎我遗漏了一些东西。 这是我尝试过的:
template<class T1, class T2>
class AClass {};
template<class T>
class AClass<T, T> {}; // specialized class.
AClass<int,float> aClassIntFloat; // works just fine
AClass<int, int> aClassIntInt; // works just fine
AClass<int> specializedIntClass; //"error: wrong number of template arguments (1, should be 2)"
我错过了什么?
【问题讨论】:
-
确实,它是一个二进制模板,那你为什么只用一个参数来实例化它呢?为第二个参数指定默认值,或定义并使用
using-alias。 -
AClass<int, int>是一个专门的实例化。 -
这只是一个虚拟的例子。我真正想要的是相当复杂。我不明白为什么它不能编译。
标签: c++ templates template-specialization class-template