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)?
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.