Die Überladungsauflösung ist ein Sprachmechanismus, um zwischen mehreren brauchbaren Funktionsüberladungen zu wählen. Seine Regeln sind kompliziert und oft überraschend, selbst für erfahrene Benutzer.
Ich habe Probleme zu verstehen, warum das Folgende zu einem mehrdeutigen Aufruf führt:
%Vor%
Ich würde erwarten, dass die Überladungsversion, die auf das zweite Argument spezialisierter ist als die generische Version, als der beste Kandidat...
Beim Portieren von Code von D2007 nach XE2 habe ich einen Compilerfehler bekommen, den ich nicht verstehen kann. Bitte beachten Sie das folgende Beispiel:
%Vor%
D2007 kompiliert das ohne ein Problem. Der XE2-Compiler weist die mit //3 mar...
Ich möchte ein std::function ähnliches Objekt erstellen, das mehr als eine Überladung speichern kann.
Syntax sort wie folgt: my_function< int(double, int), double(double, double), char(int, int) > .
Oder expliziter:
%Vor%
Me...
%Vor%
Dieser Code verursacht eine Mehrdeutigkeit und ich weiß nicht warum, vielleicht habe ich explizite Konvertierung in rvalue Referenz gemacht.
Meine Idee ist, dass der rvalue Verweis implizit in nur lvalue konvertiert werden kann....
Also las ich Eric Lipperts "Constraints sind nicht Teil der Signatur" , und jetzt verstehe ich, dass die Spezifikation spezifiziert, dass Typ-Constraints NACH der Überladungsauflösung geprüft werden, aber ich bin mir immer noch nicht sicher, wa...
Angesichts der folgenden Erklärungen
%Vor%
Warum bekomme ich einen Kompilierfehler für den folgenden Code:
%Vor%
BTW, das Problem kann behoben werden, indem die Deklaration der zweiten Methode in geändert wird
%Vor%
Hier geht es überhaupt nicht um Windows-Formulare, sondern nur um den "Hintergrund".
Ich spielte mit Windows Forms herum, als ich einen Fehler in einem AddRange für einen MenuStrip.Items bekam, der ToolStripMenuItem in ToolStripItem...