是否允许以下内容?
typedef Foo<Bar> Bar;
我的编译器抱怨'class Bar'之前的声明为'class Bar'。
答案 0 :(得分:5)
你在做什么相当于:
struct A {};
struct B {};
typedef A B;
这并不奇怪,这是不合法的。
答案 1 :(得分:2)
如果Bar是一个类作为Foo的模板参数,则它不能同时为typedefed Foo<Bar>
。
您将重新声明Bar,首先作为独立类,然后作为模板实例化,但如果您已将Bar声明为类,则即使typedef Foo<Whatever> Bar;
也不起作用。
答案 2 :(得分:0)
不,不允许。