Dla jednej klasy chcę przechowywać niektóre wskaźniki funkcji dla funkcji składowych tej samej klasy w jednym obiekcie map
przechowującym obiekty std::function
. Ale nie na samym początku z tym kodem:Używanie ogólnych obiektów std :: function z funkcjami składowymi w jednej klasie
class Foo {
public:
void doSomething() {}
void bindFunction() {
// ERROR
std::function<void(void)> f = &Foo::doSomething;
}
};
otrzymam error C2064: term does not evaluate to a function taking 0 arguments
w xxcallobj
połączeniu z niektórych dziwnych błędów konkretyzacji szablonu. Obecnie pracuję na Windows 8 z Visual Studio 2010/2011 i na Win 7 z VS10 również się nie udaje. Błąd musi być oparty na dziwnych zasadach C++, których nie przestrzegam.
EDYCJA: Robię NOT użyj zwiększenia. To jest C++ 11 zintegrowany z kompilatorem MS.
Poprawną odpowiedzią jest użycie 'std :: invoke', które nie jest obsługiwane przez MSVC2013. To pytanie jest trochę przestarzałe. – Mikhail