Namespaces
Variants

C++ named requirements: CustomizationPointObject (since C++20)

From cppreference.net
C++ named requirements

Объекты точек настройки являются бессостоятельными функциональными объектами типа литерального semiregular класса.

Все объекты точек настройки одного и того же типа класса равны. Эффекты вызова различных экземпляров этого типа с одинаковыми аргументами эквивалентны, независимо от того, является ли выражение, обозначающее экземпляр, lvalue или rvalue, const-квалифицированным или нет. Однако volatile-квалифицированный экземпляр не обязан быть вызываемым. Таким образом, объекты точек настройки могут свободно копироваться, а копии могут использоваться взаимозаменяемо.

Пусть Fn будет типом объекта точки кастомизации, и Args... будет набором типов. Если std:: declval < Args > ( ) ... удовлетворяет требованиям к аргументам для Fn , Fn моделирует

В противном случае ни один оператор вызова функции Fn не участвует в разрешении перегрузки.