【发布时间】:2011-10-01 09:21:19
【问题描述】:
myTemplateTemplate 期望第二个模板参数是具有一个参数的模板。 myDefaultTemplate 是一个有两个参数的模板,第二个参数的默认类型是 int。
在VS2008中,我得到编译错误:类模板'myDefaultTemplate'的模板参数列表与模板参数'TT'的模板参数列表不匹配
那么,为什么 myDefaultTemplate 不能用作只有一个参数的模板? 如果 C++ 编译器支持的话会有什么负面影响吗?
template
<typename T1, typename T2 = int>
class
myDefaultTemplate{
T1 a;
T2 b;
};
template
<typename T1, template<typename T2> class TT>
class
myTemplateTemplate{
T1 a;
TT<T1> b;
};
int main(int argc, char* argv[]){
myTemplateTemplate<int, myDefaultTemplate> bar; //error here:
return 0;
}
【问题讨论】:
-
你应该得到一个“最常使用'模板'这个词的问题”的徽章:)