Heim > Backend-Entwicklung > C++ > C-Funktionsvorlagen: Überladung vs. (nicht standardmäßige) Teilspezialisierung?

C-Funktionsvorlagen: Überladung vs. (nicht standardmäßige) Teilspezialisierung?

Linda Hamilton
Freigeben: 2024-12-02 20:58:12
Original
378 Leute haben es durchsucht

C   Function Templates: Overloading vs. (Non-Standard) Partial Specialization?

Funktionsvorlagen: Teilweise Spezialisierung vs. Überladung

In C ist eine teilweise Spezialisierung von Funktionsvorlagen durch den Sprachstandard nicht zulässig. Bestimmte Compiler stellen jedoch möglicherweise Erweiterungen bereit, die dies ermöglichen.

Partielle Spezialisierung definiert

Teilweise Spezialisierung umfasst die Definition einer Vorlage mit einem spezielleren Satz von Vorlagenargumenten als die ursprüngliche Vorlage . Bei Klassenvorlagen bedeutet dies die Angabe spezifischer Werte für einige oder alle Vorlagenparameter.

Beispiel: Teilweise Spezialisierung und Überladung

Der bereitgestellte Code zeigt eine Überladung, nicht eine teilweise Spezialisierung. Die folgenden Funktionen sind definiert:

template<typename T1, typename T2>
inline T1 max(T1 const& a, T2 const& b)
{
    return a < b ? b : a;
}

template<typename T>
inline T const& max(T const& a, T const& b)
{
    return 10;
}
Nach dem Login kopieren

Während die Vorlagenparameter der zweiten Funktion vom Typ her identisch sind, handelt es sich nicht um eine teilweise Spezialisierung. Es handelt sich um eine separate Funktion, die die erste Funktion überlastet.

Spezialisierung von Funktionsvorlagen

Eine vollständige Spezialisierung von Funktionsvorlagen ist hingegen zulässig. Dabei wird eine Vorlage definiert, bei der alle Vorlagenparameter explizit angegeben werden. Es wird jedoch nicht direkt vom C-Standard unterstützt und ist nur in einigen Compilern als Erweiterung implementiert.

Partielle Spezialisierungs-Compiler-Erweiterungen

In Microsoft Visual Studio 2010 Express , ermöglicht die Compiler-Erweiterung eine teilweise Spezialisierung sowohl für Klassen als auch für Funktionsvorlagen. Dies ist kein Standardverhalten und kann zu Portabilitätsproblemen führen.

Das obige ist der detaillierte Inhalt vonC-Funktionsvorlagen: Überladung vs. (nicht standardmäßige) Teilspezialisierung?. 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