我最近遇到了几个C2998错误,这是第一个错误:
案例1,我可以做到
getPrecision(int col)
,在定义完全指定的模板类的静态成员时,我可以使用template <typename T> struct X { static char value; };
template <> char X<int>::value = 'a';
char X<char>::value = 'b';
或省略它,但我不知道为什么两者都有效。
案例2也编译:
template <>
,当定义完全指定的模板类的静态成员,并且静态成员不在未指定的模板中时,省略template <typename T> struct X2{};
template <> struct X2<int> { static char value; };
char X2<int>::value = 'a';
,它就会编译。
案例3,如果我添加template <>
,这将在第二行触发C2998错误:
template <>
为什么会这样?