Spec-Zone.ru › C++

C++ наимённые требования: Callable

Тип Callable — это тип, для которого применимы операции INVOKE и INVOKE<R> (используемые, например, в std::function, std::bind, и std::thread::thread).

INVOKE можно выполнить явно с помощью библиотечной функции std::invoke.

(с C++17)

INVOKE<R> можно выполнить явно с помощью библиотечной функции std::invoke_r.

(с C++23)

Требования

Тип T удовлетворяет Callable, если

Дано

  • f, объект типа T,
  • ArgTypes, подходящий список типов аргументов,
  • R, подходящий тип возвращаемого значения.

Следующие выражения должны быть допустимы:

Выражение Требования
INVOKE<R>(f, std::declval<ArgTypes>()...) Выражение корректно в контексте неоценивания.

Примечания

Указатели на члены данных являются Callable, даже если вызовы функций не происходят.

Стандартная библиотека

Кроме того, следующие средства стандартной библиотеки принимают любой тип Callable (не только FunctionObject):

function
(C++11)
оборачивает вызываемый объект любого копируемого типа с указанной сигнатурой вызова функции
(шаблон класса)
move_only_function
(C++23)
оборачивает вызываемый объект любого типа с указанной сигнатурой вызова функции
(шаблон класса)
bind
(C++11)
связывает один или несколько аргументов с объектом-функцией
(шаблон функции)
bind_frontbind_back
(C++20)(C++23)
связывает переменное количество аргументов в заданном порядке с объектом-функцией
(шаблон функции)
reference_wrapper
(C++11)
CopyConstructible и CopyAssignable обёртка ссылки
(шаблон класса)
result_ofinvoke_result
(C++11)(удалено в C++20)(C++17)
вычисляет тип результата вызова вызываемого объекта с набором аргументов
(шаблон класса)
thread
(C++11)
управляет отдельной нитью
(класс)
jthread
(C++20)
std::thread с поддержкой автоматического присоединения и отмены
(класс)
call_once
(C++11)
вызывает функцию только один раз, даже если вызвана из нескольких потоков
(шаблон функции)
async
(C++11)
выполняет функцию асинхронно (возможно, в новой нити) и возвращает std::future, который будет содержать результат
(шаблон функции)
packaged_task
(C++11)
упаковывает функцию для хранения её возвращаемого значения для асинхронного получения
(шаблон класса)

См. также

is_invocableis_invocable_ris_nothrow_invocableis_nothrow_invocable_r
(C++17)
проверяет, можно ли вызвать тип (как если бы с помощью std::invoke) с заданными типами аргументов
(шаблон класса)
invocableregular_invocable
(C++20)
определяет, что вызываемый тип можно вызвать с заданным набором типов аргументов
(концепция)
invokeinvoke_r
(C++17)(C++23)
вызывает любой объект Callable с заданными аргументами и возможностью указать тип возврата(с C++23)
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/Callable

Spec-Zone.ru

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