Function Overloading - more detailed rules
Matching the type of an actual parameter and the type of a formal parameter
The call is ambiguous if two or more matches are found at the same level
The criateria below are tried in order
- Exact match
- Only trivial conversions are performed
- Array name to pointer, function name to function pointer, T to const T,...
- Match using promotions
- Integral promotions and floating point promotions
- bool to int, char to int, short to int, float to double, ...
- Match using standard conversions
- int to double, double to int, double to long double, derived* to base*, T* to void*, int to unsigned int, ...
- Match using user defined conversions
- Conversion operators and constructors
- Match using the ellipsis ...
- Unspecified number of arguments