Wie gebe ich Template-Argumente an ein Objekt, das inline mit seiner Klasse erstellt wurde?

8

Ich weiß, dass wir das in C ++ tun können:

%Vor%

Dies macht ein Objekt vom Typ A namens a . Es entspricht:

%Vor%

Ich habe mich gefragt, wie ich das mit Vorlagen machen würde. Zum Beispiel:

%Vor%

Das kompiliert nicht, aber Sie bekommen die Idee. Wie würde ich die Template-Argumente für ein Objekt angeben, das inline mit seiner Klassendefinition erstellt wurde? Ist das überhaupt möglich?

    
template boy 24.12.2012, 16:47
quelle

3 Antworten

2

Das Zeug nach dem schließenden } wird nach dem Standard als init-declarator-list bezeichnet.

14.3 verbietet explizit die Verwendung in Template-Klassen-Deklarationen:

  

In einer Template-Deklaration, explizite Spezialisierung oder explizit   Instanziierung der Init-Declarator-Liste in der Deklaration   enthalten höchstens einen Deklarator. Wenn eine solche Deklaration verwendet wird   deklarieren Sie eine Klassenvorlage, kein Deklarator ist erlaubt.

    
Pubby 24.12.2012, 17:42
quelle
1

Ich glaube nicht, dass Sie das tun können. Die von Ihnen erwähnte Form für Strukturen und Klassen wird nach meinem Verständnis für Rückwärtskompatibilität mit c beibehalten - wo Sie das für Strukturen tun können.
Nette Idee, obwohl:)

    
Oren S 24.12.2012 17:39
quelle
1

Sie können Variablen nicht aus einer Vorlagendefinition deklarieren, auch nicht, wenn alle Vorlagenargumente Standardwerte haben.

Dies ist auch ein Fehler:

%Vor%
Ben Voigt 24.12.2012 17:42
quelle