Standardvorlagenargumente in C verstehen: Spezifizierte Argumente vermeiden
In der C-Programmierung ist es möglich, eine Klassenvorlage mit Standardvorlagenargumenten zu deklarieren . Es kann jedoch verwirrend sein, zu verstehen, warum die Angabe von Argumenten in bestimmten Szenarien immer noch erforderlich ist.
Ursprüngliche Frage:
Bedenken Sie die folgende Klassenvorlage:
<code class="cpp">template <typename T = int> class Foo { };</code>
Der Frage zufolge sollte folgender Code erlaubt sein:
<code class="cpp">Foo me;</code>
Stattdessen ist jedoch folgender Code erforderlich:
<code class="cpp">Foo<int> me;</code>
Antwort:
Vor C 17 war die Angabe von Argumenten in einer Klassenvorlagendeklaration mit Standardargumenten obligatorisch. Mit anderen Worten, der folgende Code war erforderlich:
<code class="cpp">Foo<> me;</code>
Auch wenn das Vorlagenargument nicht explizit angegeben wird, werden die leeren spitzen Klammern < > muss vorhanden sein, um anzuzeigen, dass das Standardargument verwendet wird. Diese Syntax ist analog zum Aufruf einer Funktion mit einem einzelnen Standardargument, das leere Klammern () erfordert.
C 17-Update:
In C 17 hat sich dieses Verhalten geändert , und es wurde möglich, die spitzen Klammern <> wegzulassen. bei Verwendung des Standardvorlagenarguments. Daher ist nun die folgende alternative Syntax zulässig:
<code class="cpp">Foo me;</code>
Schlussfolgerung:
Um die Anforderung der Angabe von Argumenten in Klassenvorlagen mit Standardargumenten zu verstehen, ist eine Vertrautheit mit dem Historischen erforderlich Entwicklung von C . In Versionen vor C 17 werden explizite spitze Klammern <> waren erforderlich, während C 17 eine bequemere Syntax einführte, die es ermöglicht, sie bei Verwendung des Standardarguments wegzulassen.
Das obige ist der detaillierte Inhalt vonWarum muss ich immer noch Argumente für eine Klassenvorlage mit Standardargumenten angeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!