Heim  >  Artikel  >  Backend-Entwicklung  >  Können Sie Vorlagenparameter in Konstruktoren in C 03 explizit angeben?

Können Sie Vorlagenparameter in Konstruktoren in C 03 explizit angeben?

Susan Sarandon
Susan SarandonOriginal
2024-11-18 04:55:01927Durchsuche

Can You Explicitly Specify Template Parameters in Constructors in C  03?

Explizite Template-Parameter-Spezifikation in Konstruktoren

Obwohl Konstruktoren die Möglichkeit haben, Template-Funktionen zu sein, stellt der C 03-Standard keine Syntax zur expliziten Angabe ihrer Template-Parameter bereit. Stattdessen bestimmt der Compiler diese Parameter automatisch anhand der bereitgestellten Argumente.

Betrachten Sie das folgende Beispiel:

struct A {
  template<typename T>
  A() {}
};

Um diese Klasse zu instanziieren, können Sie den Vorlagenparameter nicht explizit angeben. Stattdessen müssen Sie sich darauf verlassen, dass der Compiler es aus den an den Konstruktor übergebenen Argumenten ableitet:

A<int> a;  // Constructs an A object with template value int

Der C 03-Standard besagt ausdrücklich:

[Hinweis: weil die explizite Vorlagenargumentliste folgt dem Namen der Funktionsvorlage, und da Konvertierungs-Member-Funktionsvorlagen und Konstruktor-Member-Funktionsvorlagen ohne Verwendung eines Funktionsnamens aufgerufen werden, gibt es keine Möglichkeit, eine explizite Vorlagenargumentliste für diese Funktionsvorlagen bereitzustellen.] (§14.5.2/5)

Diese Einschränkung kann die Debugging-Bemühungen behindern, wenn der Compiler die richtigen Vorlagenparameter nicht ermitteln kann. Eine explizite Parameterangabe könnte Fehlermeldungen verbessern und möglicherweise das Problem beheben. Es wird jedoch vom C 03-Standard nicht unterstützt.

Das obige ist der detaillierte Inhalt vonKönnen Sie Vorlagenparameter in Konstruktoren in C 03 explizit angeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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