Ich habe einen einfachen variadischen Template-Test in Code :: Blocks vorbereitet, bekomme aber einen Fehler:
Keine passende Funktion für den Aufruf von 'OutputSizes ()'
Hier ist mein Quellcode:
%Vor% Ich verwende GNU GCC mit -std=C++0x
. Die Verwendung von -std=gnu++0x
macht keinen Unterschied.
Es liegt daran, dass Sie keinen Basisfall angegeben haben. Sie haben den letzten Datentyp des Variadic-Vorlagenparameters extrahiert. Anschließend haben Sie versucht, einen leeren Variadic-Parameter mit einer Funktion zu vergleichen, die einen Typ und einen Variadic-Parameter verwendet. Sie müssen einen "Basisfall" angeben, wenn der Variadic-Parameter leer ist.
%Vor%Bearbeiten: Die Überladungen mit vielen Nullwerten, die ich hier gezeigt habe, funktionieren nur, wenn Sie auch tatsächliche Laufzeitargumente basierend auf den Vorlagentypen nehmen. Wenn Sie nur Template-Parameter direkt verwenden, verwenden Sie eine Rekursion wie in Howard Hinnants Antwort gezeigt.
Tags und Links c++ c++11 recursion codeblocks variadic