std::function_ref
Определён в заголовочном файле <functional> | ||
|---|---|---|
template< class... > class function_ref; // not defined | (1) | (начиная с C++26) |
template< class R, class... Args > class function_ref<R(Args...)>; template< class R, class... Args > class function_ref<R(Args...) noexcept>; template< class R, class... Args > class function_ref<R(Args...) const>; template< class R, class... Args > class function_ref<R(Args...) const noexcept>; | (2) | (начиная с C++26) |
Шаблон класса std::function_ref — это невладеющая обёртка функции. Объекты std::function_ref могут хранить и вызывать ссылку на вызываемый объект — целевую сущность: функции, лямбда-выражения, выражения bind или другие функциональные объекты, но не указатели на функции-члены и указатели на объекты-члены. std::nontype можно использовать для создания std::function_ref, передавая указатели на функции, указатели на функции-члены и указатели на объекты-члены.
Специализации std::function_ref поддерживают все возможные комбинации cv-квалификаторов (за исключением volatile) и спецификаторов noexcept, указанные в параметре шаблона.
Каждая специализация std::function_ref является типом TriviallyCopyable, удовлетворяющим требованиям copyable.
Типы-члены
| Член | Определение |
|---|---|
BoundEntityType (закрытый) | неуказанный тип TriviallyCopyable, удовлетворяющий требованиям copyable и способный хранить указатель на объект или указатель на функцию(тип-член, используемый только для иллюстрации*) |
FunctionPointerType (закрытый) |
R(*)(BoundEntityType ,Args&&...)noexcept(noex ) где noex равно |
Поля данных
| Член | Определение |
|---|---|
BoundEntityType bound-entity | связанный объект-сущность (объект-член, используемый только для иллюстрации*) |
FunctionPointerType thunk-ptr | сохранённый указатель на функцию (объект-член, используемый только для иллюстрации*) |
Функции-члены
создаёт новый объект function_ref (открытая функция-член) |
|
присваивает значение function_ref (открытая функция-член) |
|
вызывает сохранённую функцию-посредник объекта function_ref (открытая функция-член) |
Руководства по выведению типов
Примечания
| Макрос проверки поддержки возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_function_ref | 202306L | (C++26) |
std::function_ref |
Пример
См. также
|
(C++11) | копируемая обёртка для любого копируемого конструируемого вызываемого объекта (шаблон класса) |
|
(C++26) | копируемая обёртка для любого копируемого конструируемого вызываемого объекта, поддерживающая квалификаторы, указанные в сигнатуре вызова (шаблон класса) |
|
(C++23) | перемещаемая, но не копируемая обёртка для любого вызываемого объекта, поддерживающая квалификаторы, указанные в сигнатуре вызова (шаблон класса) |
|
(C++26) | тег создания значения (тег) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/functional/function_ref