以下在Visual Studio 2015中编译
template <int> struct Test;
template <> struct Test<0> {
template <int> static void foo();
template <> static void foo<0>() {}
template <> static void foo<1>() {}
};
但GCC 5.2抱怨错误:template-id&#39; foo&lt; 0&gt;&#39;在主要模板的声明中 模板&lt;&gt; static void foo&lt; 0&gt;(){}
如何修复代码以便在两个编译器中编译?
答案 0 :(得分:3)
template<int> struct Test;
template<> struct Test<0> {
template<int> static void foo();
};
template<> void Test<0>::foo<0>() {}
template<> void Test<0>::foo<1>() {}
试试这个
答案 1 :(得分:1)
这应该适用于g ++和MSVC:
template <int>
struct Test;
template <>
struct Test<0>
{
template <int>
static void foo();
};
template <>
void Test<0>::foo<1>()
{
}
int main()
{
Test<0>::foo<1>();
}