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