Так как имя функции по сути является указателем, то этот указатель можно передать, как аргумент другой функции.
Указатель на функцию можно использовать следующим образом:
// Некоторая функция
float func(float x1, float x2);
// Указатель на функцию: возвращаемый_тип (* имя_указателя)(типы_аргументов)
float (*func_pointer)(float, float);
// Указателю можно присвоить только функции имеющие такую же
// сигнатуру (возвращаемый тип и типы аргументов)
func_pointer = func;
// Указатель на функцию может быть аргументом
double findMinimum(x1, x2, float (*func_arg)(float, float)) {
// Вызвать функцию через указатель можно также как и обычную функцию
// потому, что имя функции тоже является указателем
float x = func_arg(x1, x2);
}
// Чтоб передать указатель на функцию, нужно просто написать имя функции без скобок
cout << findMinimum(1, 2, func) << '\n';