递归typedef

时间:2010-06-06 09:06:27

标签: c++ typedef recursion

是否允许以下​​内容?

typedef Foo<Bar> Bar;

我的编译器抱怨'class Bar'之前的声明为'class Bar'。

3 个答案:

答案 0 :(得分:5)

你在做什么相当于:

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

这并不奇怪,这是不合法的。

答案 1 :(得分:2)

如果Bar是一个类作为Foo的模板参数,则它不能同时为typedefed Foo<Bar>
您将重新声明Bar,首先作为独立类,然后作为模板实例化,但如果您已将Bar声明为类,则即使typedef Foo<Whatever> Bar;也不起作用。

答案 2 :(得分:0)

不,不允许。