글
VS 2005를 사용하여 만든 프로젝트를 VS2012로 마이그레이션 하는 도중 템플릿 사용 부분에서 에러가 발생했습니다.
제가 겪은 에러가 이미 다른 사람들도 경험을 했고 MS의 Connect 사이트에 해결 책이 있어서 공유합니다.
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
댓글
우리는 자원 봉사자의 그룹이며, 지역 사회에 새로운 방식을 열어. 귀하의 웹 사이트에서 작동하는 귀중한 정보를 우리에게 제공했습니다. 당신은 무서운 일을 한 우리의 전체 사회는 당신에게 감사합니다.