0

可能重复:
哪个编译器是正确的?需要模板化返回类型之前的“模板”?

如果我有以下课程:

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>
4

0 回答 0