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

As it stands, Foo looks like a partial template specialization. You need to provide a primary Foo class template:

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 に答える