可能重复:
Which compiler is right? ‘template’ before templated return type needed?
如果我有以下课程:
template <typename T1>
class OuterClass
{
template <typename T2>
class InnerClass
{
};
};
当我尝试引用OuterClass<int>::InnerClass<int>
时,GCC抱怨我需要在template
之前使用InnerClass
关键字,但Visual Studio会抱怨该关键字。显然我可以使用宏来解决问题,但感觉有点难看。在这种情况下谁是对的,有更好的解决方案吗?
GCC
OuterClass<int>::template InnerClass<int>
VS
OuterClass<int>::InnerClass<int>
解决方案:
#if defined(_MSC_VER)
#define INNER_TEMPLATE
#else
#define INNER_TEMPLATE template
#endif
OuterClass<int>:: INNER_TEMPLATE InnerClass<int>