Since C++20, the concept of customization point is introduced in [namespace.std]/7:
Other than in namespace std or in a namespace within namespace std, a program may provide an overload for any library function template designated as a customization point, provided that (a) the overload's declaration depends on at least one user-defined type and (b) the overload meets the standard library requirements for the customization point. [ Note: This permits a (qualified or unqualified) call to the customization point to invoke the most appropriate overload for the given arguments. — end note ]
Does the note part (note the emphasized word "qualified") mean that std::f
will automatically invoke the most appropriate overload for f
if std::f
is a customization point?
A real example is std::swap
, which is a designated customization point. Does this mean since C++20, we can write std::swap(a, b)
directly instead of using std::swap; swap(a, b);
?