Search⌘ K
AI Features

- Examples

Discover how to implement and use C++ templates through practical examples like variadic templates that count elements and calculate products, and perfect forwarding that allows flexible constructor invocation. Learn to enhance your code reuse and efficiency by mastering these template techniques within this lesson.

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