* All functions with matching name, including function templates, are put into the set. Return 9L0-509 types and visibility are not considered. Templates are added with as closely matching parameters as possible. Member functions are considered functions with the first parameter being a pointer-to-class-type.
* Conversion 9L0-402 Braindump functions are added as so-called surrogate functions, with two parameters, the first being the class type and the second the return type.
* All functions that don't match the number of parameters, even after considering defaulted parameters and ellipses, are removed from the set.
* For each function, each argument is considered to see if a legal conversion sequence exists 9L0-509 to convert the caller's argument to the function's parameters. If no such conversion sequence can be found, the function is removed from the set.
The legal conversions are detailed below, but in short a legal conversion is any number of built-in (like int to float) conversions combined with at most one user defined conversion. The last part is critical to understand if you are writing replacements to built-in types, such as smart pointers. User defined conversions are described above, 9L0-402 Questions but to summarize it is
1. implicit conversion operators like operator short toShort();
2. One argument constructors (If a constructor has all but one parameter defaulted, it is considered one-argument)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment