2010-07-22 2 views
2
template < typename T > 
struct test 
{ 
    template < typename U > 
    friend struct test<U>; 
}; 

int main() {} 

이것은 완전히 유효한 코드입니다. 아니요? MSVC++ 2010이 컴파일에 실패했기 때문에 묻습니다. 처음 템플릿이 MS 컴파일러를 혼란스럽게 만들지는 않았습니다. 내가 아는 한 책, 웹 사이트 등에서 알 수있는대로 작동해야합니다.템플릿 자체 우정

+0

꼬모는 ''모드도 그것을 컴파일에 실패 말한다 친구 선언 할 수있다 부분 특수화 친구 구조 테스트를 선언하지 마십시오. ; '' – Abhay

+0

신경 쓰지 마라. 나는 지체이다. MSVC가 맞습니다.별로 도움이되지 않습니다. –

+2

나중에 참조 할 수 있도록 조사 결과 및 해결책을 설명하십시오. :) – GManNickG

답변

3

올바른 구문은 다음과 같습니다 엄격한 오류 C++ C++ 0x_extensions "ComeauTest.c", 5 호선 : 오류 :

template < typename T > 
struct test 
{ 
    template < typename U > 
    friend struct test; // no <U> 
}; 

int main() {}