VS 2005를 사용하여 만든 프로젝트를 VS2012로 마이그레이션 하는 도중 템플릿 사용 부분에서 에러가 발생했습니다.

 

제가 겪은 에러가 이미 다른 사람들도 경험을 했고 MSConnect 사이트에 해결 책이 있어서 공유합니다.

 

struct default_policy

{

    template<class T>

    struct apply

    {

        typedef T type;

    };

};

 

template<class Policy=default_policy>

struct Def

{

    typedef Policy policy;

    typedef Def<policy> thisClass;

 

    typedef typename policy::apply<thisClass>::type type; // syntax error '<'

};

 

void main()

{

}

위 코드에서 typedef typename policy::apply<thisClass>::type type; 부분에서 에러가 발생합니다.

 

이것은 VC11의 문제가 아니고 위 코드가 표준을 지키지 않아서 발생한 문제입니다.

 

해결책은 아래와 같습니다(간단합니다)

struct default_policy

{

    template<class T>

    struct apply

    {

        typedef T type;

    };

};

template<class Policy=default_policy>

struct Def

{

    typedef Policy policy;

    typedef Def<policy> thisClass;

    typedef typename policy::template apply<thisClass>::type type;

};

 

 

typedef typename policy::apply<thisClass>::type type;

이것을 아래와 같이 바꾸면 됩니다.

typedef typename policy::template apply<thisClass>::type type;

 

 

출처 : http://connect.microsoft.com/VisualStudio/feedback/details/745629/typename-template-bug-in-c-compiler-in-visual-studio-2012-rc

 

 

by 흥배 2012. 11. 27. 08:00
  • toko jaket distro 2012.11.30 11:35 ADDR EDIT/DEL REPLY

    우리는 자원 봉사자의 그룹이며, 지역 사회에 새로운 방식을 열어. 귀하의 웹 사이트에서 작동하는 귀중한 정보를 우리에게 제공했습니다. 당신은 무서운 일을 한 우리의 전체 사회는 당신에게 감사합니다.