2

Curiously Recurring Templates が非常にうまく機能するという問題がありますが、簡単なテストを通過することさえできません。

template<typename T, int _size, typename OutterT>
class Foo {

};

template<typename T>
class Bar : public Foo<T, 2, Bar> {};

//typedef Bar<float> Vec2f;


int main()
{
    return 0;
}

これにより、エラーが発生します

foo.cpp:7: error: type/value mismatch at argument 3 in template parameter list for ‘template<class T, int _size, class OuterT> class Foo’
foo.cpp:7: error:   expected a type, got ‘Bar’

何が欠けていますか。

g++ 4.2.1 でコンパイル

4

1 に答える 1

8
template<typename T, int _size, typename OutterT>
class Foo {

};

template<typename T>
class Bar : public Foo<T, 2, Bar<T> > {};
//                              ^^^

Bar<float> x;

はテンプレートであるためBar、テンプレート引数を指定してクラスにインスタンス化する必要があります。

于 2011-04-07T16:07:51.043 に答える