이 컴파일 및 Visual C++ 2015 업데이트 3 RC에 잘 실행에서 발견 된 템플릿 멤버 함수에 액세스 할 수 없음 또는 모호함 확인하지 :여러 개의 기본 클래스
이 코드는 두 가지 문제있다class A
{
template <class T> void f() {}
};
class B : A {};
class C : A {};
class D : B, C {};
int main()
{
D d;
d.f<int>();
}
:
- 가
f()
은 비공개이므로d.f<int>()
은 컴파일에 실패합니다. f()
은B::f()
또는C::f()
일 수 있으므로 모호합니다.
그러나 진단에는 /Wall
및 B::f()
이 호출됩니다. 순서를 반대로하면 D
에서 상속받은 C::f()
이 호출되므로 목록의 첫 번째 기본 클래스를 사용하고있는 것으로 보입니다.
g ++ 및 clang 모두 올바르게 이해합니다. 뭔가 빠졌거나 Visual C++의 버그입니까?
가장 확실한 버그입니다. http://coliru.stacked-crooked.com/a/6ef1400b04db2ad7 – vsoftco
버그 신고서 제출 : https://connect.microsoft.com? –
@ YuchenZhong 내가 잘못했는지 확인하고 싶다. 그것은 어제부터 아래로 있었다. – isanae