我试图测试下面的模板化代码但是我收到以下错误:
error: ‘Foo’ is not a template
我的代码是否正确无误?它看起来是我可能做的最简单的模板代码!
template<typename D>
struct Ciccio{
};
template<typename S>
struct Foo< Ciccio<S> >{
};
int main(){
typedef Ciccio<int> test_type;
Foo<test_type> f;
return 1;
}
答案 0 :(得分:3)
目前,Foo
看起来像是部分模板专业化。您需要提供主要Foo
类模板:
template<typename D>
struct Ciccio {};
// primary template
template<typename S>
struct Foo;
// partial specialization
template<typename S>
struct Foo< Ciccio<S> > {};
int main(){
typedef Ciccio<int> test_type;
Foo<test_type> f;
}