The function declarations found by name lookup (
[basic.lookup]) constitute the
set of candidate functions
. Because of the rules for name lookup, the set of candidate functions
consists either entirely of non-member functions or entirely of
member functions of some class
T. Otherwise, the argument list is the
expression-list
in the call augmented by the addition of an implied object
argument as in a qualified function call
. If the current class is, or is derived from,
T, and the keyword
this (
[expr.prim.this]) refers to it,
- if the unqualified function call
appears in a precondition assertion of a constructor
or a postcondition assertion of a destructor
and overload resolution selects a non-static member function,
the call is ill-formed;
- otherwise,
the implied object argument is
(*this).
Otherwise,
- if overload resolution selects a non-static member function,
the call is ill-formed;
- otherwise,
a contrived object of type
T
becomes the implied object argument.