C ++ Template-Spezialisierung der Funktion: "Illegale Verwendung expliziter Template-Argumente"
Folgende template-Spezialisierung-code:
template<typename T1, typename T2>
void spec1()
{
}
Test Fall 1:
template< typename T1> //compile error
void spec1<int>()
{
}
Test-Fall 2:
template< typename T2> //compile error
void spec1<int>()
{
}
generiert die folgenden Kompilierungsfehler:
Fehler C2768: 'spec1' : unzulässige Verwendung von expliziten template-Argumente
Weiß jemand warum?
Kommentar zu dem Problem - Öffnen
welche Plattform/compiler verwenden Sie?
Ich bin mit Visual C++ 08
InformationsquelleAutor der Frage jameszhao00 | 2009-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Funktion Vorlagen können nicht teilweise spezialisierten, nur komplett, also so:
Dafür, warum die Funktion Vorlagen können nicht partiell spezialisiert haben, möchten Sie vielleicht, um Lesen Sie diese.
Wenn Sie spezialisieren sich teilweise (nur möglich für Klassen), die Sie würde tun müssen, so wie hier:
damit Sie die Liste
T1
wieder.Den Weg, Ihre Spezialisierungen sind geschrieben, Sie wäre mehrdeutig für
spec1<int, int>
.InformationsquelleAutor der Antwort Rüdiger Hanke