Namespaces
Variants

std:: copyable_function

From cppreference.net
Utilities library
Function objects
Function wrappers
(C++11)
copyable_function
(C++26)
(C++11)
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
Определено в заголовке <functional>
template < class ... >
class copyable_function ; // не определено
(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-квалификаторов и спецификаторов 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)

Функции, не являющиеся членами класса

перегружает алгоритм 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)
копируемая обёртка любого копируемого вызываемого объекта
(шаблон класса)
перемещаемая обёртка любого вызываемого объекта, поддерживающего квалификаторы в заданной сигнатуре вызова
(шаблон класса)
невладеющая обёртка любого вызываемого объекта
(шаблон класса)