рекурсивный typedef - PullRequest
       7

рекурсивный typedef

1 голос
/ 06 июня 2010

Разрешено ли следующее?

typedef Foo<Bar> Bar;

Мой компилятор жалуется на то, что у класса Bar ранее было объявление как класс Bar.

Ответы [ 3 ]

5 голосов
/ 06 июня 2010

То, что вы делаете, эквивалентно:

struct A {};
struct B {};
typedef A B;

, что не удивительно, не является законным.

2 голосов
/ 06 июня 2010

Если Bar является классом в качестве параметра шаблона для Foo, он не может быть одновременно определен как Foo<Bar>.
Вы бы изменили обозначение Bar, сначала как отдельный класс, а затем как экземпляр шаблона, но даже typedef Foo<Whatever> Bar; не будет работать, если вы уже объявили Bar как класс.

0 голосов
/ 06 июня 2010

Нет, это не разрешено.

...