How to Avoid Code Bloat When Using Templates

How to Avoid Code Bloat When Using Templates

If you are using templates in your code, you are probably aware of their invaluable advantages. However, templates can cause a code bloat: The compiler reduplicates the template’s body for each distinct type being used. In the following example, three distinct copies of the min template will be automatically generated – one for each type used:

 template < class T > T min(T f, T s){	return f < s? f: s; }int n = 5, m= 10;	int j = min(n,m); //min<int> instantiated	char c = 'a', d = 'b';	char k = min(c,d); //min<char> instantiated	short int u = 5, v = 10;	short int w = min(u,v);// min<short int> instantiated

Sometimes, such unnecessary instantiations can be avoided by (safely) casting the arguments into one common type:

 short n = 5, m= 10;	int j = min( static_cast<int> (n), static_cast<int> (m) ); //min<int> instantiated	char c = 'a', d = 'b';	char k = static_cast<char> (min( static_cast<int> (c), static_cast<int> (d) ) ); //min<int> used

This technique can also be applied to pointers: first, they have to be cast to void * and then cast back to their original type. Please note that for very small templates (like the above one), this technique is not worth the bother. Nonetheless, when templates consisting of hundreds of code lines are used (such as STL containers), you may consider its use.

See also  How College Students Can Shape the Future of Tech Responsibility

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist