Template:cpp/ranges/cpo

The name denotes a customization point object, which is a const function object of a literal  class type. For exposition purposes, the cv-unqualified version of its type is denoted as.

All instances of are equal. The effects of invoking different instances of type on the same arguments are equivalent, regardless of whether the expression denoting the instance is an lvalue or rvalue, and is const-qualified or not (however, a volatile-qualified instance is not required to be invocable). Thus, can be copied freely and its copies can be used interchangeably.

Given a set of types, if meet the requirements for arguments to  above,  models Otherwise, no function call operator of participates in overload resolution.
 * , and
 * , and
 * , and