Wie kann ich die folgende Template-Funktion ändern, um variantenbasierte Vorlagen zu nutzen? Das heißt, std :: bind Platzhalter durch einen variadischen Parameter anstelle von P1 und P2 zu ersetzen? Im Moment habe ich eine dieser Funktionen pro Arity, wobei die Arity Null keinen P-Parameter hat, bis Arity 9 P1- bis P9-Parameter hat. Ich hatte gehofft, wenn möglich, dies in eine einzige Funktion zu zerlegen.
%Vor% Sie können std::is_placeholder
für Spezialisierungen einer benutzerdefinierten Vorlage (teilweise) spezialisieren. Auf diese Weise können Sie einen Platzhaltergenerator über die übliche int_sequence
-Technik einfügen.
Aus [func.bind.isplace] / 2
Die Implementierung muss eine Definition mit dem
BaseCharacteristic
vonintegral_constant<int, J>
enthalten wennT
der Typ vonstd::placeholders::_J
ist, andernfalls muss einBaseCharacteristic
vonintegral_constant<int, 0>
vorhanden sein. Ein Programm kann diese Vorlage für einen benutzerdefinierten TypT
spezialisieren, um eineBaseCharacteristic
vonintegral_constant<int, N>
mitN > 0
zu haben, um anzuzeigen, dassT
als Platzhaltertyp behandelt werden sollte.
Die übliche int_sequence
:
Die benutzerdefinierte Platzhaltervorlage und Spezialisierung von is_placeholder
:
Ich bin mir nicht sicher, wo ich das 1
einführen soll; Die Orte, die ich in Betracht gezogen habe, sind alles andere als optimal.
Verwenden Sie es, um etwas Bindemittel zu schreiben:
%Vor%Anwendungsbeispiel des Ordners:
%Vor%