Search⌘ K

Template Arguments

Explore how C++ automatically deduces template arguments for function templates, including references, pointers, and universal references. Understand when explicit template arguments are required, how default arguments work, and new features introduced in C++17 that simplify template argument deduction for constructors.

Template Arguments #

In general, template arguments can be automatically deduced for function templates. From the user’s perspective, function templates feel like functions.

Conversion:

  • The compiler uses simple conversions for deducing the template arguments from the function arguments.
  • The compiler removes const or volatile from the function arguments and converts C-arrays and functions to pointers.

Template argument deduction for function templates:

template <typename T>
void func(ParamType param);

Two datatypes were deduced:

  • T
  • ParamType

ParamType can be a

  • Reference or pointer
  • Universal reference(
...