std:: copyable_function
|
Определено в заголовке
<functional>
|
||
|
template
<
class
...
>
class copyable_function ; // не определено |
(1) | (начиная с C++26) |
|
template
<
class
R,
class
...
Args
>
class
copyable_function
<
R
(
Args...
)
>
;
|
(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-квалификаторов
и
спецификаторов noexcept
, указанных в его шаблонном параметре. Эти квалификаторы и спецификатор (если присутствуют) добавляются к его
operator()
.
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)
|
невладеющая обёртка любого вызываемого объекта
(шаблон класса) |