Dies kompiliert und läuft gut auf Visual C ++ 2015 Update 3 RC:
%Vor%Es gibt zwei Probleme mit diesem Code:
f()
ist privat, daher kann d.f<int>()
nicht kompiliert werden. f()
ist mehrdeutig, da es B::f()
oder C::f()
sein könnte. Es gibt jedoch keine Diagnose mit /Wall
und B::f()
wird aufgerufen. Umkehr der Reihenfolge D
erbt von bekommt C::f()
aufgerufen, also denke ich, es ist nur die erste Basisklasse in der Liste verwenden.
Sowohl g ++ als auch clang haben es richtig gemacht. Fehle ich etwas oder ist das ein Fehler in Visual C ++?