0

重複の可能性:
どのコンパイラが正しいですか? テンプレート化された戻り値の型の前に「テンプレート」が必要ですか?

次のクラスがある場合:

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

0 に答える 0