Recientemente me encontré con que la sintaxis de puntero de función se puede simplificar cuando se utiliza la siguiente clase de ayuda:¿Puede simplificarse typedef de la función de miembro con clases de plantilla auxiliar?
template<typename Sig>
struct Fun {
typedef Sig* Ptr;
};
Me permite un puntero a void()
de la siguiente manera:
typedef Fun<void()>::Ptr fun_ptr;
fun_ptr f = foo;
me gustaría crear un similares utilidad para crear un typedef a punteros de función de miembro. Esto permitiría a la siguiente sintaxis:
struct Foo {
void bar() {}
};
typedef MemFun<Foo, void()>::Ptr bar_type;
bar_type b = &Foo::bar;
Sin embargo, no puedo averiguar la sintaxis typedef:
template<class T, typename Sig>
struct MemFun {
// How to use T and Sig to create member function typedef?
};
¿Alguien puede ayudar?
¿Hay algún problema con 'std :: function'? O 'boost :: function' si tu cadena de herramientas es antigua ... Todo esto ya se ha inventado, hace mucho tiempo. –