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