std::copyable_function
Определено в заголовке <functional> |
||
|---|---|---|
template< class... > class copyable_function; // not defined |
(1) | (с C++26) |
template< class R, class... Args > class copyable_function<R(Args...)>; template< class R, class... Args > class copyable_function<R(Args...) noexcept>; template< class R, class... Args > class copyable_function<R(Args...) &>; template< class R, class... Args > class copyable_function<R(Args...) & noexcept>; template< class R, class... Args > class copyable_function<R(Args...) &&>; template< class R, class... Args > class copyable_function<R(Args...) && noexcept>; template< class R, class... Args > class copyable_function<R(Args...) const>; template< class R, class... Args > class copyable_function<R(Args...) const noexcept>; template< class R, class... Args > class copyable_function<R(Args...) const &>; template< class R, class... Args > class copyable_function<R(Args...) const & noexcept>; template< class R, class... Args > class copyable_function<R(Args...) const &&>; template< class R, class... Args > class copyable_function<R(Args...) const && noexcept>; |
(2) | (с C++26) |
Шаблон класса std::copyable_function — универсальная полиморфная оболочка для функций. Объекты std::copyable_function могут хранить и вызывать любой объект, копируемый по значению вызываемый объект-цель — функции, лямбда-выражения, выражения bind или другие объекты-функции, а также указатели на члены-функции и указатели на члены-объекты.
Хранимый вызываемый объект называется объектом-целью std::copyable_function. Если std::copyable_function не содержит объекта-цели, он называется пустым. В отличие от std::function, вызов пустого std::copyable_function приводит к неопределённому поведению.
std::copyable_function поддерживает все возможные комбинации квалификаторов cv, квалификаторов ссылок и спецификаторов noexcept, не включая volatile , указанные в параметре шаблона. Эти квалификаторы и спецификатор (если таковые имеются) добавляются к его operator().
std::copyable_function удовлетворяет требованиям копируемого по значению и копируемого по присваиванию.
Типы членов
| Тип | Определение |
|---|---|
result_type |
R |
Члены-функции
|
(C++26) |
создаёт новый объект std::copyable_function (публичный член-функция) |
|
(C++26) |
уничтожает объект std::copyable_function (публичный член-функция) |
|
(C++26) |
заменяет или уничтожает объект-цель (публичный член-функция) |
|
(C++26) |
меняет местами объекты-цели двух объектов std::copyable_function (публичный член-функция) |
|
(C++26) |
проверяет, есть ли у std::copyable_function объект-цель (публичный член-функция) |
|
(C++26) |
вызывает объект-цель (публичный член-функция) |
Внешние функции
|
(C++26) |
перегрузка алгоритма std::swap (функция) |
|
(C++26) |
сравнивает std::copyable_function с nullptr (функция) |
Примечания
Реализации могут хранить вызываемый объект малого размера в объекте std::copyable_function. Такая оптимизация для маленьких объектов необходима для указателей на функции и специализаций std::reference_wrapper, и может применяться только к типам T, для которых std::is_nothrow_move_constructible_v<T> является true.
| Макросы проверки функций | Значение | Стандарт | Функция |
|---|---|---|---|
__cpp_lib_copyable_function |
202306L | (C++26) |
std::copyable_function |
Пример
См. также
|
(C++11) |
оболочка для вызываемого объекта любого копируемого по значению типа с указанной сигнатурой вызова функции (шаблон класса) |
|
(C++23) |
оболочка для вызываемого объекта любого типа с указанной сигнатурой вызова функции (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/functional/copyable_function