In C, we know we have something called printf() function. This printf() function can take any number of arguments of any built-in type (not user-defined type). As an example, the following piece of code is valid for the standard built-in printf() function. <Code> const char* msg = "%s can accept %i parameters (or %s)."; printf(msg, std::string("Variadic templates"), 100, "more"); </Code> The problem in this code is, it will not print the string part, but it gets compiled with the MSVC as well as GCC 8.2 compiler. However, if I change the code like below, now it prints everything properly. <Code> const char* msg = "%s can accept %i parameters (or %s)."; printf(msg, std::string("Variadic templates").c_str() , 100, "more"); </Code> The printf is like a variadic template function but it sticks to only built-in types. Now the question comes how can I write variadic template functions in C++. In C++ 11 the