内部类模板关键字用法

时间:2013-01-02 08:49:52

标签: c++ templates visual-c++ gcc cross-platform

  

可能重复:
  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>

0 个答案:

没有答案