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Объекты могут хранить и вызывать любую CopyConstructible Callableцель — функции, лямбда-выражения, выражения bind
, или другие функциональные объекты, а также указатели на функции-элементы и указатели на элементы-данные.
Хранимый вызываемый объект называется цельюstd::copyable_function std::copyable_function. Если не содержит цели, он называется пустым. В отличие от std::function, вызов std::copyable_functionпустого
std::copyable_function приводит к неопределённому поведению.
Поддерживает любые возможные комбинации cv-квалификаторовvolatile (не включая ), ref-квалификаторов и спецификаторов noexceptoperator(), указанные в его параметре шаблона. Эти квалификаторы и спецификатор (если есть) добавляются к его
std::copyable_function.
Удовлетворяет требованиям CopyConstructible и CopyAssignable
Типы членов
| Тип | Определение |
result_type
|
R
|
Функции-члены
создает новый объект
std::copyable_function
(public member function) |
|
уничтожает объект
std::copyable_function
(public member function) |
|
|
заменяет или уничтожает целевой объект
(public member function) |
|
обменивает целевые объекты двух
std::copyable_function
(public member function) |
|
проверяет, имеет ли
std::copyable_function
целевой объект
(public member function) |
|
|
вызывает целевой объект
(public member function) |
Функции, не являющиеся членами класса
|
(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)
|
перемещаемая обёртка любого вызываемого объекта, поддерживающего квалификаторы в заданной сигнатуре вызова
(шаблон класса) |
|
(C++26)
|
невладеющая обёртка любого вызываемого объекта
(шаблон класса) |