uncallable Vorlagenkonstruktor? [Duplikat]

9

Eine Template-Member-Funktion mit Template-Argumenten, die nicht in der Parameterliste verwendet werden, kann in folgender Form aufgerufen werden:

%Vor%

Aber wie rufe ich einen Template-Konstruktor auf, der keinen Template-Parameter in seiner Argumentliste verwendet?

%Vor%

Sicherlich

%Vor%

Kann nicht die Syntax sein, da dies die Konstruktion einer Variablen vom Typ D <int> ist, die eine Instanz der Klassenvorlage D<class> ist.

Dies ist nicht nur eine akademische Frage, die ich für Template-Konstruktoren verwende (nicht die Vorlage in der Konstruktorargumentliste), im Grunde richtlinienbasierte Factories und verwende derzeit einen Dummy-Parameter mpl::identity <mytype>() als Workaround.

    
koraxkorakos 25.12.2013, 17:33
quelle

1 Antwort

4

Dies ist nicht mein eigenes Wissen, sondern stammt aus ein paar anderen Quellen, hauptsächlich dem bereits veröffentlichten C ++ Template-Konstruktor .

Ich nehme an, dass es nicht möglich ist, Template-Konstruktoren ohne Parameter zu erstellen, da dies mehrere Standardkonstruktoren erzeugen könnte. Vorlagen werden zur Kompilierungszeit erweitert und erzeugen so eine gewisse Überlastung der von ihnen erstellten Funktion. Der Standardkonstruktor kann nicht überladen werden, daher muss dies fehlschlagen, wenn Sie mehr als eine Vorlageninstanz verwenden.

Abgesehen von der Dummy-Variable kann ich nur an eine werksseitige Vorlagenmethode oder Klasse denken (wenn das in Ihrem Fall möglich ist)

ex: (Verwendung eines int-Templates anstelle eines Klassen-Templates, da ich im Moment nicht an ein anderes Beispiel denken kann)

%Vor%     
user1781290 25.12.2013, 19:34
quelle

Tags und Links