Understanding C++ function overload resolution and member-function signatures
This medium-difficulty C++ question tests your knowledge of how the language generates distinct overloads for member functions. It requires you to recognize which signature variations the compiler treats as separate, overloadable declarations rather than redefinitions.
The question asks you to identify all the dimensions along which a member function signature can vary while still creating a new, valid overload. This includes but is not limited to parameter types, but also encompasses other aspects of the function declaration that affect its identity in the overload set. Success depends on knowing the precise rules the C++ standard applies when deciding whether two member-function declarations are distinct.
- Parameter type and count
- Const and volatile qualifiers on the member function itself
- Reference qualifiers (lvalue vs. rvalue)
- Return type constraints in template contexts