Вызываемый объект в C++
Корректный вызов с перечисленными типами гарантирует std::invocable.
Первый параметр концепта - вызываемый объект,
остальные - типы аргументов. Подключите
#include <concepts>, опишем
шаблон run_once и выведем результат
лямбды:
#include <concepts>
#include <iostream>
template<typename F, typename... Args>
requires std::invocable<F, Args...>
auto run_once(F callable, Args... args) {
return callable(args...);
}
int main() {
auto step = [](int n) { return n + 10; };
std::cout << run_once(step, 5) << "\n";
return 0;
}
Напишите шаблон apply с
std::invocable<F, int>, вызывающий
F с int. Передайте лямбду,
умножающую аргумент на 2, и выведите
результат для 6.