Obwohl es möglich ist, Konstruktorvorlagen innerhalb einer Klasse zu erstellen, leitet der Kompilierungsprozess in der Regel Vorlagenparameter aus den Argumenten ab bereitgestellt. Es bestehen jedoch Zweifel, ob es eine Syntax gibt, die die explizite Angabe von Vorlagenparametern in solchen Konstruktoren ermöglicht.
Betrachten Sie die folgende Struktur als Beispiel:
struct A { template<typename T> A() {} };
Es stellt sich die Frage: Gibt es eine Methode für Diese Struktur instanziieren oder die Vorlagenparameter ihres Konstruktors explizit definieren?
In der Praxis können Szenarien auftreten, in denen der Compiler den richtigen Vorlagenkonstruktor nicht identifizieren kann. was zu potenziellen Schwierigkeiten führen kann. Eine explizite Angabe von Vorlagenparametern könnte die Fehlerberichterstattung verbessern oder sogar das Problem lösen.
Antwort:
Enttäuschenderweise bietet der C 03-Standard eine eindeutige Antwort:
"Da Konvertierungs-Member-Funktionsvorlagen und Konstruktor-Member-Funktionsvorlagen ohne Verwendung eines Funktionsnamens aufgerufen werden, gibt es keine Möglichkeit, eine explizite Vorlagenargumentliste dafür bereitzustellen diese Funktionsvorlagen. (§14.5.2/5)
Im Wesentlichen wird die explizite Angabe von Vorlagenparametern in Konstruktordefinitionen vom C 03-Standard nicht unterstützt.
Das obige ist der detaillierte Inhalt vonKönnen Sie Vorlagenparameter in Konstruktordefinitionen explizit angeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!