는 내가 모든 오류를 이해하지 못하는 내가이 코드가 "템플릿 특수화에 '템플릿 <>'이 필요합니까?라는 오류가 표시되는 이유는 무엇입니까?
error: template specialization requires 'template<>'
Field<Class> const CRTP<Class>::_field("blah");
~~~~~~~~~~~^
을 얻을 연타
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() { }
이것을 컴파일하려고하면. _field
에 대한 내 정의가 잘못되었으며 어떻게 수정합니까?
(_field
에 인수가 반드시 모든 서브 클래스 동일하지 않습니다.)
당신이 템플릿을 붙이는 시도 되세요을 <>? –
@AlexChamberlain : 하하 아니요, 저는 전문성과 관련이없는 것을 이해하지 못합니다. 왜냐하면 제가 전문적으로 전문성을 발휘하지 못했기 때문입니다. – Mehrdad
@Mehrdad : 글쎄, 사실, 클래스 템플릿 클래스의'정적 '데이터 멤버를 전문으로하고있다. (멤버 함수처럼 17.4.3/1'static' 데이터 멤버가 특수화 될 수있다.) –