Heim > Backend-Entwicklung > C++ > Wie bestimmt die Ableitung von C-Vorlagen die Spezialisierung mithilfe der Teilreihenfolge?

Wie bestimmt die Ableitung von C-Vorlagen die Spezialisierung mithilfe der Teilreihenfolge?

Linda Hamilton
Freigeben: 2024-12-02 10:20:12
Original
276 Leute haben es durchsucht

How Does C   Template Deduction Determine Specialization Using Partial Ordering?

Partielles Bestellverfahren bei der Vorlagenableitung

Das partielle Bestellverfahren bestimmt die Spezialisierungsbeziehung zwischen Funktionsvorlagen bei der C-Vorlagenableitung. Dabei geht es darum, transformierte Funktionstypen für jede Vorlage zu erstellen und sie zum Vergleich zu verwenden.

  1. Transformierte Funktionstypen:
    Für jede Vorlage wird ein transformierter Funktionstyp durch Ersetzen durch Unique erstellt Typen für Vorlagenparameter in seinem Funktionstyp.
  2. Übereinstimmende Argumente und Parameter:
    Der transformierte Funktionstyp einer Vorlage wird mit der ursprünglichen Funktionsvorlage der anderen Vorlage abgeglichen, wobei die folgenden zwei Fälle verwendet werden:

    • Transformierter Typ-1 als Argumentvorlage und ursprüngliche Vorlage-2 als Parametervorlage
    • Transformierter Typ-2 als Argumentvorlage und ursprüngliche Vorlage-1 als Parameter Vorlage
  3. Erfolg und Reihenfolge abgleichen:
    Wenn die Typableitung in beiden Fällen den transformierten Funktionstyp erfolgreich mit der ursprünglichen Funktionsvorlage abgleichen kann, ist eine Vorlage mehr spezialisierter als die anderen. Wenn eine erfolgreiche Übereinstimmung in beide Richtungen erfolgt, ist keine der Vorlagen spezialisierter.

Beispiel:

Betrachten Sie diese beiden Funktionsvorlagen:

template<typename T, typename U>
void foo(T, U); // original #1

template<typename T>
void foo(T const*, X<T>); // original #2
Nach dem Login kopieren

Übereinstimmung der transformierten Typen:

  • 1b vs. #2: Typ Der Abzug kann nicht mit Parametern übereinstimmen.

  • 2b vs. #1: Der Typabzug kann mit Parametern übereinstimmen (T = char const*, U = X).

Fazit: Überlastung Nr. 2 ist spezialisierter als Nr. 1.

Das obige ist der detaillierte Inhalt vonWie bestimmt die Ableitung von C-Vorlagen die Spezialisierung mithilfe der Teilreihenfolge?. 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