Geben Sie für jede Vorlage ein Argument eines Settyps ein

7

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?

%Vor%

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.

    
Aart Stuurman 13.10.2016, 07:49
quelle

2 Antworten

17
%Vor%

DEMO

    
Piotr Skotnicki 13.10.2016, 08:11
quelle
4

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:

%Vor%

(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.

>     
Vittorio Romeo 13.10.2016 08:03
quelle

Tags und Links