Argument Deduction

Argument Deduction

When we call a function template such as max() for some arguments, the template parameters are determined by the arguments we pass. If we pass two ints to the parameter types T const&, the C++ compiler must conclude that T must be int. Note that no automatic type conversion is allowed here. Each T must match exactly. For example:

template <typename T> 
inline T const& max (T const& a, T const& b); 
max(4,7)     // OK: T is int for both arguments 
max(4,4.2)   // ERROR: first T is int, second T is double 

There are three ways to handle such an error:

  1. Cast the arguments so that they both match:

    max(static_cast<double>(4),4.2)    // OK 

  2. Specify (or qualify) explicitly the type of T:

    max<double>(4,4.2)                 // OK 

  3. Specify that the parameters may have different types.

For a detailed discussion of these topics, see the next section.

     Python   SQL   Java   php   Perl 
     game development   web development   internet   *nix   graphics   hardware 
     telecommunications   C++ 
     Flash   Active Directory   Windows