Heim > Backend-Entwicklung > C++ > Warum kann mein Compiler in überladenen Funktionen keine Vorlagenargumente ableiten?

Warum kann mein Compiler in überladenen Funktionen keine Vorlagenargumente ableiten?

Linda Hamilton
Freigeben: 2024-11-25 05:47:14
Original
1041 Leute haben es durchsucht

Why Does My Compiler Fail to Deduce Template Arguments in Overloaded Functions?

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(c) schreiben. Dadurch wird der Compiler gezwungen, die richtige Vorlagenspezialisierung basierend auf dem angegebenen Argumenttyp zu verwenden.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage