从VC++到GCC移植:谈两者的语法差异
许式伟 (版权声明)
2007-1-28
类型引用
template
<
class
T
>
class Foo
{
typedef T::SomeType SomeType;
};
class Foo
{
typedef T::SomeType SomeType;
};
这段代码在VC++中一点问题也没有,但是GCC并不允许,因为它不知道T::SomeType是什么。你需要改为:
template
<
class
T
>
class Foo
{
typedef typename T::SomeType SomeType;
};
class Foo
{
typedef typename T::SomeType SomeType;
};
通过typename T::SomeType告诉GCC,SomeType是一个类型名,而不是其他东西。
当然,这种情况不只是出现在typedef中。例如:
template
<
class
Container
>
void visit( const
void visit( const