How the compiler handles a template function

When the compiler deals with a template function, it constructs a regular function/class with the template parameters expanded. The following code will make the compiler generate regular functions, as it utilizes templates:

auto valuei = int{42}; 
auto valuei_cubed = pow_n(valuei, 3); auto valuef = float{42.42f}; auto valuef_squared = pow_n(valuef, 2); auto valuef_const_squared = const_pow_n<2, float>(valuef); auto valuef_const_cubed = const_pow_n<3, float>(valuef);

Thus, when compiled, as distinguished from regular functions, the compiler will generate new functions for every template parameter. This means that it is the equivalent of manually creating four different functions looking something ...

Get C++ High Performance now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.