Syntax for a variadic function template: :
template(typename arg, typename... args) return_type function_name(arg var1, args... var2) Note :, typename arg, typename... args must be inside angular brackets.
Below is an example in C++ to show how we can use variadic function template:
1 2 3.14 Pass me any number of arguments I will print I am empty function and I am called at last.
Remember that templates are replaced by actual functions by compiler.
The variadic templates work as follows :
The statement, print(1, 2, 3.14, “Pass me any number of arguments”, “I will print\n”); is evaluated in following manner :
Firstly, the compiler resolves the statement into
cout<< 1 <<endl ; print(2, 3.14, "Pass me any number of arguments", "I will print\n");
Now, the compiler finds a print() function which can take those arguments and in result executes the variadic print() function again in similar manner :
cout<< 2 <<endl ; print(3.14, "Pass me any number of arguments", "I will print\n");
Again, it is resolved into the following forms :
cout<< 3.14 <<endl ; print("Pass me any number of arguments", "I will print\n");
cout<< "Pass me any number of arguments" <<endl ; print("I will print\n");
cout<< "I will print\n" <<endl ; print();
Now, at this point the compiler searches for a function overload whose match is the empty function i.e. the function which has no argument.
This means that, all functions that have 1 or more arguments are matched to the variadic template and all functions that with no argument are matched to the empty function.
This article is contributed by MAZHAR IMAM KHAN. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Rated as one of the most sought after skills in the industry, own the basics of coding with our C++ STL Course and master the very concepts by intense problem-solving.
- not1 and not2 function templates in C++ STL with Examples
- Templates and Static variables in C++
- Templates and Default Arguments
- Templates in C++
- Templates in C++ vs Generics in Java
- What happens when a virtual function is called inside a non-virtual function in C++
- Function Overloading vs Function Overriding in C++
- Difference between Virtual function and Pure virtual function in C++
- How to call function within function in C or C++
- Difference between virtual function and inline function in C++
- Can we call an undeclared function in C++?
- Can we use function on left side of an expression in C and C++?
- Declare a C/C++ function returning pointer to array of integer pointers
- Function overloading and return type
- Default arguments and virtual function
- Function overloading and const keyword
- How to measure time taken by a function in C?
- Comparator function of qsort() in C
- Can we access private data members of a class without using a member or a friend function?
- Function Overloading and float in C++
Improved By : Akanksha_Rai