c++ - Compilation Error on Recursive Variadic Template Function -
i've prepared simple variadic template test in code::blocks, i'm getting error:
no matching function call 'outputsizes()'
here's source code:
#include <iostream> #include <typeinfo> using namespace std; template <typename firstdatatype, typename... datatypelist> void outputsizes() { std::cout << typeid(firstdatatype).name() << ": " << sizeof(firstdatatype) << std::endl; outputsizes<datatypelist...>(); } int main() { outputsizes<char, int, long int>(); return 0; }
i'm using gnu gcc -std=c++0x
. using -std=gnu++0x
makes no difference.
here's how disambiguate base case:
#include <iostream> #include <typeinfo> template <typename firstdatatype> void outputsizes() { std::cout << typeid(firstdatatype).name() << ": " << sizeof(firstdatatype) << std::endl; } template <typename firstdatatype, typename seconddatatype, typename... datatypelist> void outputsizes() { outputsizes<firstdatatype>() outputsizes<seconddatatype, datatypelist...>(); } int main() { outputsizes<char, int, long int>(); }
Comments
Post a Comment