Я привык видеть такой синтаксис для указателей на функции
int (*pointer_name) (float, char *);
void call_function (void (*)(int), int);
В некоторых функциональных библиотеках C ++ 03 я вижу типы, используемые следующим образом:
abc::function<void(*)(int,float)> f;
В C ++ 11 std::function
я вижу тип, заданный таким образом
std::function<void(int,float)> f;
Отсутствует (*)
. Почему?
C ++ 03 function<T>
имеет T
, идентичный типу соответствующего указателя функции. Легко представить себе реализацию.
std::function
в C ++ 11 поддерживается улучшениями основного языка. Были ли расширены типы аргументов шаблона для обеспечения возможности вызова?