Именованные требования C++: объект точки настройки (начиная с C++20)
Объекты точек настройки — это не имеющие состояния объекты-функции литерального semiregular типа класса.
Все объекты точек настройки одного и того же типа класса равны. Результаты вызова разных экземпляров этого типа с одними и теми же аргументами эквивалентны независимо от того, является ли выражение, обозначающее экземпляр, lvalue или rvalue, а также имеет ли оно квалификатор const. Однако от экземпляра с квалификатором volatile не требуется поддержка вызова. Таким образом, объекты точек настройки можно свободно копировать, а копии можно использовать взаимозаменяемо.
Пусть Fn — тип объекта точки настройки, а Args... — набор типов. Если std::declval<Args>()... удовлетворяют требованиям к аргументам для Fn, то Fn моделирует
-
std::invocable<Fn, Args...>, -
std::invocable<const Fn, Args...>, -
std::invocable<Fn&, Args...>и -
std::invocable<const Fn&, Args...>.
В противном случае ни один оператор вызова функции Fn не участвует в разрешении перегрузки.
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/CustomizationPointObject