C++ наимённые требования: Callable
Тип Callable — это тип, для которого применимы операции INVOKE и INVOKE<R> (используемые, например, в std::function, std::bind, и std::thread::thread).
|
| (с C++17) |
|
| (с C++23) |
Требования
Тип T удовлетворяет Callable, если
Дано
-
f, объект типаT, -
ArgTypes, подходящий список типов аргументов, -
R, подходящий тип возвращаемого значения.
Следующие выражения должны быть допустимы:
| Выражение | Требования |
|---|---|
INVOKE<R>(f, std::declval<ArgTypes>()...) | Выражение корректно в контексте неоценивания. |
Примечания
Указатели на члены данных являются Callable, даже если вызовы функций не происходят.
Стандартная библиотека
Кроме того, следующие средства стандартной библиотеки принимают любой тип Callable (не только FunctionObject):
|
(C++11) | оборачивает вызываемый объект любого копируемого типа с указанной сигнатурой вызова функции (шаблон класса) |
|
(C++23) | оборачивает вызываемый объект любого типа с указанной сигнатурой вызова функции (шаблон класса) |
|
(C++11) | связывает один или несколько аргументов с объектом-функцией (шаблон функции) |
|
(C++20)(C++23) | связывает переменное количество аргументов в заданном порядке с объектом-функцией (шаблон функции) |
|
(C++11) | CopyConstructible и CopyAssignable обёртка ссылки (шаблон класса) |
|
(C++11)(удалено в C++20)(C++17) | вычисляет тип результата вызова вызываемого объекта с набором аргументов (шаблон класса) |
|
(C++11) | управляет отдельной нитью (класс) |
|
(C++20) | std::thread с поддержкой автоматического присоединения и отмены (класс) |
|
(C++11) | вызывает функцию только один раз, даже если вызвана из нескольких потоков (шаблон функции) |
|
(C++11) | выполняет функцию асинхронно (возможно, в новой нити) и возвращает std::future, который будет содержать результат (шаблон функции) |
|
(C++11) | упаковывает функцию для хранения её возвращаемого значения для асинхронного получения (шаблон класса) |
См. также
|
(C++17) | проверяет, можно ли вызвать тип (как если бы с помощью std::invoke) с заданными типами аргументов (шаблон класса) |
|
(C++20) | определяет, что вызываемый тип можно вызвать с заданным набором типов аргументов (концепция) |
|
(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