Gibt es eine Möglichkeit für eine C ++ - Template-Funktion, genau N Argumente zu nehmen?

8

Was ich meine, ist zum Beispiel ein Konstruktor für eine Klasse wie die folgende:

%Vor%

Ich hoffe, es ist klar, dass ich nicht eine variadische Funktion möchte, sondern eine Funktion, die genau N Argumente akzeptiert, wenn N zur Kompilierungszeit bekannt ist. Daher sollte vector<3>(1.5, 2.5) im obigen Beispiel einen Fehler bei der Kompilierung verursachen, während vector<2>(1.5, 2.5) kompiliert und ausgeführt werden sollte.

Ist das möglich?

Ich dachte, dass das vielleicht mit Parameterpaketen gemacht werden könnte, aber ich bin mir nicht ganz sicher, wie.

    
Matt 16.02.2018, 00:31
quelle

2 Antworten

9

Mit etwas Umleitung können Sie etwas tun wie:

%Vor%     
Jarod42 16.02.2018, 00:43
quelle
1

Wahrscheinlich ist der einfachste Weg, static_assert zu verwenden. Fügen Sie gegebenenfalls ein passendes Muster hinzu:

%Vor%

Dies wird die meiste Zeit tun, auch wenn Sie einen netten freundlichen benutzerdefinierten Fehler haben.

    
Chris Kitching 16.02.2018 00:49
quelle

Tags und Links