Heim > Backend-Entwicklung > C++ > Hauptteil

Warum sind Standardvorlagenargumente nur für Klassenvorlagen in C zulässig?

Linda Hamilton
Freigeben: 2024-10-31 02:14:01
Original
757 Leute haben es durchsucht

Why are Default Template Arguments Only Allowed for Class Templates in C  ?

Standardvorlagenargumente: Klassenvorlagen vs. Elementfunktionsvorlagen

F: Warum sind Standardvorlagenargumente nur für Klassenvorlagen zulässig? Warum nicht auch für Member-Funktionsvorlagen?

Beispiel:

<code class="cpp">struct my_class {
  template<class T = int>
  void mymember(T* vec) {
    // ...
  }
};</code>
Nach dem Login kopieren

Laut C sind Standardvorlagenargumente nur für Klassenvorlagen gültig.

A: Standardvorlagenargumente sind in der Tat nützlich. Stellen Sie sich eine Sortierfunktion vor:

<code class="cpp">template<typename Iterator, 
         typename Comp = std::less<
            typename std::iterator_traits<Iterator>::value_type>>
void sort(Iterator beg, Iterator end, Comp c = Comp()) {
  ...
}</code>
Nach dem Login kopieren

Der Grund für die aktuelle Einschränkung in C liegt jedoch in den Anfängen der Sprache, als freistehende Funktionen als weniger wichtig galten. Folglich mussten sie alle Vorlagenargumente aus Funktionsargumenten ableiten, was die Verwendung von Standardwerten ausschloss.

Diese Einschränkung beeinträchtigt die Flexibilität des Codes und die Kompatibilität mit Mitgliedsfunktionsvorlagen. Um dies zu beheben, führte C 0x Standardvorlagenargumente für Funktionsvorlagen ein.

Wie Bjarne Stroustrup, der Erfinder von C, in einem Fehlerbericht feststellte:

„Das Verbot von Standardvorlagen.“ Argumente für Funktionsvorlagen sind ein fehlgeleitetes Überbleibsel aus der Zeit, als freistehende Funktionen als Bürger zweiter Klasse behandelt wurden und verlangten, dass alle Vorlagenargumente aus den Funktionsargumenten abgeleitet und nicht spezifiziert werden mussten.“

„Die Einschränkung schränkt den Programmierstil erheblich ein.“ indem freistehende Funktionen unnötigerweise von Mitgliedsfunktionen unterschieden werden, wodurch es schwieriger wird, Code im STL-Stil zu schreiben.“

Das obige ist der detaillierte Inhalt vonWarum sind Standardvorlagenargumente nur für Klassenvorlagen in C zulässig?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!