2011-04-28 5 views

답변

1

이 코드는 컴파일해서는 안됩니다. 이것은 VS의 버그 (또는 바보 같은 확장 프로그램)입니다. GCC도이를 거절해야합니다. 운영자는 사용 범위에서 액세스 할 수 없습니다.

꼬모는 올바르게 취급 :

"ComeauTest.c", line 28: error: function "A::operator<<(const T &) [with T=int]" 
      (declared at line 14) is inaccessible 
    a << 4; 

편집하십시오 관련 표준 니펫 13.3/1

[참고 :에서 적절한 것으로 보장되지 과부하 해상도에 의해 선택된 기능을 문맥을 위해. 함수의 액세스 가능성과 같은 기타 제한 사항은 을 호출 컨텍스트 에서 잘못 사용할 수 있습니다. ]

3

마이크로 소프트는 버그를 인정하고 컴파일러의 다음 주요 릴리즈에서 수정 될 것이라고 주장합니다 (VC10/VS-what-is-after-2010로 읽음 - 아마도 VC10/VS2010 용 서비스 팩이 아님). 코멘트에서 http://connect.microsoft.com/VisualStudio/feedback/details/649496/visual-c-doesnt-respect-the-access-modifier-for-operator-member-function-templates

  • 은, 수정은 이미 내부 컴파일러 빌드 할 것으로 보인다.

+0

+1 최종 소스를 제공합니다. –

관련 문제