- Examples
Let's look at some examples of variadic templates.
We'll cover the following...
Example 1: Variadic Template
C++
// templateVariadicTemplates.cpp#include <iostream>template <typename... Args>int printSize(Args... args){return sizeof ...(args);}template<int ...>struct Mult;template<>struct Mult<>{static const int value= 1;};template<int i, int ... tail>struct Mult<i, tail ...>{static const int value= i * Mult<tail ...>::value;};int main(){std::cout << std::endl;std::cout << "printSize(): " << printSize() << std::endl;std::cout << "printSize(template,2011,true): " << printSize("template",2011,true) << std::endl;std::cout << "printSize(1, 2.5, 4, 5, 10): " << printSize(1, 2.5, 4, 5, 10) << std::endl;std::cout << std::endl;std::cout << "Mult<10>::value: " << Mult<10>::value << std::endl;std::cout << "Mult<10,10,10>::value: " << Mult<10,10,10>::value << std::endl;std::cout << "Mult<1,2,3,4,5>::value: " << Mult<1,2,3,4,5>::value << std::endl;std::cout << std::endl;}
Explanation
In the example above, we have used the printSize function, which prints the number of elements (of any type) passed as arguments. It detects the number of elements at compile-time using the sizeof operator, and in case of an empty ...