1

我试图测试下面的模板化代码,但出现以下错误:

  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;    
}
4

1 回答 1

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;
}
于 2013-02-26T13:29:51.310 回答