Любопытно повторяющиеся шаблоны? - PullRequest
2 голосов
/ 07 апреля 2011

У меня проблема с тем, что 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

1 Ответ

8 голосов
/ 07 апреля 2011
template<typename T, int _size, typename OutterT>
class Foo {

};

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

Bar<float> x;

Поскольку Bar является шаблоном, вы должны предоставить аргумент шаблона, чтобы создать его экземпляр в классе.

...