Callable
- это просто имя.
Это параметр типа шаблона, и в этом контексте предполагается, что он может вызываться без параметров. Это может или не может возвратить что-либо; ваш пример кода ничего не делает с результатом (если есть).
Примеры:
void foo() {std::cout << "Hi!"; } // a function pointer
struct bar { void operator () const { std::cout << "Lo!"; }}; // a struct
double one = iterations(10, foo); //
double two = iterations(10, bar{}); // an object of type bar
double three = iterations(10, []() {std::cout << "Lambda!"; });
Существенным моментом является то, что каждая из этих переданных вещей может быть вызвана с помощью вызова функции синтаксис.