std:: invocable, std:: regular_invocable
|
Определено в заголовке
<concepts>
|
||
|
template
<
class
F,
class
...
Args
>
concept invocable
=
|
(начиная с C++20) | |
|
template
<
class
F,
class
...
Args
>
concept regular_invocable = std :: invocable < F, Args... > ; |
(начиная с C++20) | |
Концепт
invocable
определяет, что вызываемый тип
F
может быть вызван с набором аргументов
Args...
с использованием шаблона функции
std::invoke
.
Концепт
regular_invocable
расширяет концепт
invocable
, требуя, чтобы выражение
invoke
было
сохраняющим равенство
и не модифицировало ни объект функции, ни аргументы.
Содержание |
Сохранение равенства
Выражения, объявленные в requires выражениях концепций стандартной библиотеки, должны быть equality-preserving (если не указано иное).
Примечания
Различие между
invocable
и
regular_invocable
является чисто семантическим.
Генератор случайных чисел может удовлетворять
invocable
, но не может удовлетворять
regular_invocable
(
комические исключены
).
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2024):
-
-
18.7.2 Концепт
invocable[concept.invocable]
-
18.7.2 Концепт
-
-
18.7.3 Концепт
regular_invocable[concept.regularinvocable]
-
18.7.3 Концепт
- Стандарт C++20 (ISO/IEC 14882:2020):
-
-
18.7.2 Концепт
invocable[concept.invocable]
-
18.7.2 Концепт
-
-
18.7.3 Концепт
regular_invocable[concept.regularinvocable]
-
18.7.3 Концепт
Смотрите также
|
проверяет, может ли тип быть вызван (как если бы с помощью
std::invoke
) с заданными типами аргументов
(шаблон класса) |
Внешние ссылки
Шуточный пример
генератора случайных чисел
, который удовлетворяет как
invocable
, так и
regular_invocable
.
|