- What is the overload set?
For each function call, it is the set of all functions with the specified name that are accessible from the call location (the accessibility may be affected by the namespaces, nested scopes, and so on).
- What is overload resolution?
It is the process of selecting which function in the overload set is going to be called, given the arguments and their types.
- What are type deduction and type substitution?
For template functions and member functions (and class constructors in C++17), type deduction determines the types of the template parameters from the types of the function arguments. For each parameter, it may be possible to deduce the type from several arguments. In this case, the results of this deduction must be the same, otherwise the type deduction fails.
Once the template parameter types are deduced, the concrete types are substituted...