C++98/03:
以前模板实例化的连续两个右尖括号(>>)会被编译器解释成 右移操作符,而不是 模板参数表的结束。
template<typename T>
struct Foo
{
typedef T type;
};
template <typename T>
class A
{
// ...
};
int main()
{
Foo<A<int>>::type xx; //编译出错,要写成 Foo<A<int> >
return 0;
}
C++11:
不加空格也无影响