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