Некоторое время назад я обнаружил, что можно написать функцию C ++, которая принимает параметр типа функции ( не тип указателя на функцию!). Например, вот функция, которая принимает функцию обратного вызова, которая принимает и возвращает значение типа double:
void MyFunction(double function(double));
Мой вопрос заключается в том, что значит иметь переменную типа функции, поскольку вы не можете объявить ее в любом другом контексте. Семантически, чем он отличается от указателя на функцию или ссылки на функцию? Есть ли важное различие между указателями на функции и переменными типа функции, о которых я должен знать?