Spec-Zone.ru › C++

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
(публичный член-функция)
operator=
(C++26)
заменяет или уничтожает объект-цель
(публичный член-функция)
swap
(C++26)
меняет местами объекты-цели двух объектов std::copyable_function
(публичный член-функция)
operator bool
(C++26)
проверяет, есть ли у std::copyable_function объект-цель
(публичный член-функция)
operator()
(C++26)
вызывает объект-цель
(публичный член-функция)

Внешние функции

swap(std::copyable_function)
(C++26)
перегрузка алгоритма std::swap
(функция)
operator==
(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

Пример

См. также

function
(C++11)
оболочка для вызываемого объекта любого копируемого по значению типа с указанной сигнатурой вызова функции
(шаблон класса)
move_only_function
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API