ошибка 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'

0 ответов

Другие вопросы по тегам