But aside from that it's free. The same problem would occur for a set, which has 3 template arguments. Template is simple and yet very powerful tool in C++. If a pointer variable stores the address of a char variable , we call it a character pointer and so on.
Note that this is a compile-time template metaprogramming construct - it acts on constants and types, not on runtime objects. One of its uses can be to check if a parameter passed to a member function is the object itself. In such cases you can define a specialization of the template for that particular type. So with each call, the parameter pack gets shorter by one parameter.
C Programming Tutorial by Examples - PowerPoint PPT Presentation - The Polygon derived class adds to these inherited methods the capability to draw itself. To the programmer using the derived class, the types involved in the inherited operations reflect the template parameter decided upon by the designer of the derived class.