ошибка C2649: 'typename': не является ошибкой класса при компиляции на VC90, но VC100 этого не делает
Я пытаюсь использовать VC90 для старого проекта на VS2008 и 2010. Но когда я переключился на V100, проблема снова была исправлена. Вот код:
//{future header message}
#ifndef __FvDoubleLink_H__
#define __FvDoubleLink_H__
#include "FvDebug.h"
template <class TNode>
class FvDoubleLinkRoot
{
FV_NOT_COPY_COMPARE(FvDoubleLinkRoot);
public:
bool IsAttach()const{return (m_Pre != NULL);}
void Detach();
TNode* Pre()const{return m_Pre;}
TNode* Next()const{return m_Next;}
protected:
FvDoubleLinkRoot():m_Pre(NULL), m_Next(NULL){}
~FvDoubleLinkRoot(){Detach();}
private:
TNode* m_Pre;
TNode* m_Next;
template <class, template<class> class> friend class FvDoubleLink; #Error here
};
#endif //__FvDoubleLink_H__
Это полный код Pastebin: https://pastebin.com/3LAqdDVq
Вот ошибка
fvdoublelink.h(29): error C2649: 'typename' : is not a 'class'
> see reference to class template instantiation 'FvDoubleLinkRoot<TNode>' being compiled
fvdoublelink.h(29): error C2059: syntax error : '>'
fvdoublelink.h(29): error C2988: unrecognizable template declaration/definition
fvdoublelink.h(40): error C2649: 'typename' : is not a 'class'