Heim >Backend-Entwicklung >C++ >Warum funktioniert „Foo me;' nicht mit Standardvorlagenargumenten in C 11?
Überwindung der expliziten Argumentspezifikation für Klassenvorlagen mit Standard-Vorlagenargumenten
C 11 führte Standard-Vorlagenargumente ein, ein Konzept, das zunächst Verwirrung stiftete. Dieser Artikel befasst sich mit diesem Thema und erklärt, warum eine Instanz einer Klassenvorlage mit Standardvorlagenargumenten, wie z. B. „Foo me;“, in main nicht gültig ist.
Betrachten Sie die folgende Klassenvorlage mit einem Standardvorlagenargument of int:
template <typename T = int> class Foo {};
Obwohl das Standard-Template-Argument vorhanden ist, wird der Code „Foo me;“ führt im Wesentlichen zu einem Kompilierungsfehler. Dies liegt daran, dass leere spitze Klammern wie in „Foo<> me;“ erforderlich sind, um das Standardvorlagenargument explizit anzugeben.
Der Grund für diese Anforderung ist die Notwendigkeit einer konsistenten Syntax bei Funktionsaufrufen. In C erfordert eine Funktion mit einem Standardargument, dass die Argumentsyntax vorhanden ist, auch wenn der Standardwert verwendet wird. Diese Regel erstreckt sich auf Klassenvorlagen mit Standardvorlagenargumenten und gewährleistet so die Konsistenz der Sprachsyntax.
Das obige ist der detaillierte Inhalt vonWarum funktioniert „Foo me;' nicht mit Standardvorlagenargumenten in C 11?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!