Versuche, Vorlagen zu verstehen

8

Ich habe ein kurzes Beispiel für die Verwirrung geschrieben, die ich hier habe:

%Vor%

Die Ausgabe davon ist:

%Vor%

Also denke ich, okay, die expliziteste Spezialisierung bekommt Priorität.
Aber dann entferne ich:

%Vor%

Und die Ausgabe ist:

%Vor%

Warum wird template <int> version nicht aufgerufen?
Was würde dazu führen, dass er angerufen wird?
Warum ist der Zweck dieser Syntax?

    
jliv902 21.01.2014, 19:53
quelle

2 Antworten

7

Die zweite Überladung erwartet eine ganze Zahl, keinen Typ. Du würdest es mit

nennen %Vor%

Live-Beispiel

Zur Klarstellung: Die zweite ist eine unabhängige überladene Funktion namens Add , keine Spezialisierung. Sie dachten wahrscheinlich an etwas wie:

%Vor%

Das ist genau das gleiche wie die letzte Spezialisierung, die Sie geschrieben haben und die damit in Konflikt stünde (Neudefinition). Live-Beispiel

    
Daniel Frey 21.01.2014, 20:00
quelle
4

Sie verwenden die falsche Syntax für die Spezialisierung für int s. Es sollte sein:

%Vor%

Und wenn Sie das tun, werden Sie feststellen, dass es aufgrund mehrerer Definitionen mit der endgültigen Spezialisierung kollidiert.

    
Joseph Mansfield 21.01.2014 20:00
quelle

Tags und Links