Probleme bei der Ableitung von Vorlagenargumenten beim Überladen von Funktionen
Sie sind auf ein Problem gestoßen, bei dem der Compiler beim Aufruf überladener Funktionen keine Vorlagenargumente ableiten kann. Schauen wir uns die Gründe für dieses Verhalten genauer an.
Ihr Code definiert zwei Vorlagenfunktionen mit jeweils spezifischen Argumenten und Rückgabetypen. Die explizite Verwendung des Typnamens S::type erstellt jedoch nicht abgeleitete Kontexte für die Vorlagenparameter A und B. Gemäß C Standard (2003), Abschnitt 14.8.2.4, werden Vorlagenparameter, die ausschließlich in nicht abgeleiteten Kontexten erscheinen, nicht berücksichtigt Argumentabzug.
In Ihrer Hauptfunktion versuchen Sie, diese überladenen Funktionen mit ganzzahligen Werten aufzurufen, z. B. temp(c) und temp2(d, 7). Der Compiler kann die Vorlagenargumente nicht ableiten, da c vom Typ char und d vom Typ int ist. Diese Argumente werden jedoch nur in nicht abgeleiteten Kontexten verwendet.
Um dieses Problem zu beheben, müssen Sie die Vorlagenargumente in Ihrem explizit angeben Anrufe. Um beispielsweise temp mit einem char-Argument aufzurufen, würden Sie temp
Wenn Sie das Konzept nicht abgeleiteter Kontexte und die Anforderungen für die Ableitung von Vorlagenargumenten verstehen, können Sie diese Fallstricke vermeiden und sicherstellen, dass Ihr Code kompiliert wird erfolgreich.
Das obige ist der detaillierte Inhalt vonWarum kann mein Compiler in überladenen Funktionen keine Vorlagenargumente ableiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!