In Visual Studio 2008 kann der Compiler den Aufruf von SetCustomer
in _tmain
unten nicht auflösen und unmissverständlich machen:
Dies ist der Kompilierungsfehler:
%Vor% Ich dachte, der Template-Argument-Lookup-Mechanismus wäre schlau genug, um die korrekte Basis Producer
abzuleiten. Warum nicht?
Ich könnte das umgehen, indem ich Producer
zu
und rufen Sie SetConsumer
als
aber es wäre schöner, wenn ich nicht müsste ...
Ich dachte, der Template-Argument-Lookup-Mechanismus wäre schlau genug, um den richtigen Base-Producer abzuleiten.
Das hat nichts mit Templates zu tun, es kommt von der Verwendung mehrerer Basisklassen - die Namenssuche ist bereits mehrdeutig und die Überladungsauflösung findet erst danach statt.
Ein vereinfachtes Beispiel wäre das folgende:
%Vor%Problemumgehungen qualifizieren den Aufruf explizit oder führen die Funktionen in den abgeleiteten Klassenbereich ein:
%Vor%