Was können Sie mit Vorlagen mit Null-Vorlagenparametern tun?

8

Ich habe vor einiger Zeit gelernt, dass Sie Vorlagen mit null Parametern erstellen können. Es ist zwar nicht möglich, sie direkt zu erstellen, Sie können jedoch Member-Vorlagen verwenden

%Vor%

Ich frage mich, ob das wohlgeformt sein soll und was man mit diesen Tieren machen kann. Können Sie sie als Vorlagenargumente übergeben und explizite Spezialisierungen erstellen (ich denke, das einzige Szenario ist dann für den leeren Fall)?

    
Johannes Schaub - litb 12.09.2015, 14:53
quelle

2 Antworten

4

Auf die Gefahr hin, offensichtlich zu klingen, endende rekursive Instantiierung.

%Vor%

Der Punkt hier ist, dass die tatsächliche Argumentliste zu Maker nicht leer ist, aber wir verwenden nur N-1 Argumente in HasNminOneParams .

    
MSalters 12.09.2015 16:33
quelle
1

Betrachten Sie die folgende Klassenvorlage:

%Vor%

Dies ist das metaprogrammierende Äquivalent eines Containers. Und genauso wie es nützlich ist, ein leeres vector oder map zu haben, ist es nützlich, ein leeres typelist zu haben. Das heißt, etwas vom Typ typelist<> . Hier sind zwei Beispiel-Anwendungsfälle für ein solches Konstrukt.

Es könnte die Abbruchbedingung für die Typrekursion sein:

%Vor%

Es könnte ein "Rückgabewert" für eine Metafunktion sein, der auf eine Fehlerbedingung hinweist.

%Vor%

Welches ist ein Helfer, den wir verwenden könnten, um eine Metafunktion eines Typlistenfilters zu schreiben:

%Vor%

Beide sind sehr nützliche Funktionen von typelist<> , und das ist nur die eine Klassenvorlage.

    
Barry 12.09.2015 16:47
quelle

Tags und Links