Templates and Default Arguments

Default parameters for templates in C++:
Like function default arguments, templates can also have default arguments. For example, in the following program, the second parameter U has the default value as char.

filter_none

edit
close

play_arrow

link
brightness_4
code

#include<iostream>
using namespace std;
  
template<class T, class U = char> class A
{
public:
    T x;
    U y;
};
  
int main()
{
    A<char> a;
    A<int, int> b;
    cout<<sizeof(a)<<endl;
    cout<<sizeof(b)<<endl;
    return 0;
}

chevron_right


Output: (char takes 1 byte and int takes 4 bytes)
2
8

Also, similar to default function arguments, if one template parameter has a default argument, then all template parameters following it must also have default arguments. For example, the compiler will not allow the following program:

filter_none

edit
close

play_arrow

link
brightness_4
code

#include<iostream>
using namespace std;
  
template<class T = char, class U, class V = int> class // Error
   // members of A
};
  
int main()
{
    

chevron_right


Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.