Para una clase, deseo almacenar algunos punteros a funciones miembro de la misma clase en uno map
almacenando objetos std::function
. Pero no llego justo al inicio con este código:Uso de objetos std :: function genéricos con funciones miembro en una clase
class Foo {
public:
void doSomething() {}
void bindFunction() {
// ERROR
std::function<void(void)> f = &Foo::doSomething;
}
};
recibo error C2064: term does not evaluate to a function taking 0 arguments
en xxcallobj
combinado con algunos errores de instancias de plantilla extraños. Actualmente estoy trabajando en Windows 8 con Visual Studio 2010/2011 y en Win 7 con VS10 también falla. El error debe basarse en algunas reglas raras de C++ que no sigo.
EDITAR: Yo hago NO use boost. Esto es C++ 11 integrado en el compilador de MS.
La respuesta correcta es usar 'std :: invoke', que no es compatible con MSVC2013. Esta pregunta está un poco pasada de moda. – Mikhail