que estoy acostumbrado a ver la sintaxis como esta para los punteros de funciónSintaxis de plantillas de C++ con parámetros de tipo de función
int (*pointer_name) (float, char *);
void call_function (void (*)(int), int);
En algunas bibliotecas funcionales C++ 03 que veo tipos utilizados de esta manera:
abc::function<void(*)(int,float)> f;
en C++ de 11 std::function
veo el tipo determinado de esta manera
std::function<void(int,float)> f;
Hay una falta (*)
. ¿Por qué?
El C++ 03 function<T>
tiene T
siendo un tipo idéntico al puntero de función correspondiente. Es fácil imaginar la implementación.
std::function
en C++ 11 es compatible con las mejoras del lenguaje central. ¿Se han ampliado los tipos de argumento de la plantilla para que se ajusten a la capacidad de invocación?
Esto es mucho mejor que el libro de texto puntero a la sintaxis! Me pregunto por qué no lo enseñamos de esta manera normalmente ... – spraff
@spraff: Probablemente porque es una innovación relativamente reciente, y la mayoría de los libros de texto tienen una rotación muy lenta. Todavía veo gente aprendiendo con Borland Turbo C++, que parece tener un gran problema con esta sintaxis. – greyfade