当我尝试用 Clang 编译它时
template<class T>
struct Field
{
char const *name;
Field(char const *name) : name(name) { }
};
template<class Derived>
class CRTP { static Field<Derived> const _field; };
class Class : public CRTP<Class> { };
Field<Class> const CRTP<Class>::_field("blah");
int main() { }
我明白了
error: template specialization requires 'template<>'
Field<Class> const CRTP<Class>::_field("blah");
~~~~~~~~~~~ ^
我根本不明白这个错误。我的定义有什么问题,我_field
该如何解决?
(请注意,_field
所有子类的参数不一定相同。)