Angenommen, ich habe eine variadische Vorlagenklasse. Wie erstelle ich eine Funktion so, dass die Argumente eines Settyps sind, zum Beispiel int
, wobei die Anzahl der Argumente der Anzahl der Templatypen entspricht?
Am Ende ist das Ziel der Funktion, ein Tupel der bereitgestellten Ints zurückzugeben. Zur Vereinfachung habe ich im Beispielcode gezeigt, dass die Funktion leer ist.
Wandbox Beispiel - (funktioniert mit C ++ 11)
Wenn Sie SFINAE nicht benötigen, können Sie mit static_assert
sicherstellen, dass Ihre Bedingungen erfüllt sind:
(Wenn Sie SFINAE benötigen, verwenden Sie std::enable_if
.)
std::conjunction
überprüft, ob alle Bedingungen erfüllt sind.
Im obigen Beispiel sind die folgenden Aufrufe gültig / ungültig:
%Vor% Wie Sie sehen, sind implizite Konvertierungen bei dieser Lösung nicht zulässig. Sie können std::is_convertible
anstelle von std::is_same
verwenden, wenn Sie möchten, dass sie zulässig sind.
Tags und Links c++ variadic-templates