Speichern von boost :: function-Objekten in einem Container

Ich habe einen Vektor vonKeyCallbacks:

typedef boost::function<void (const KeyEvent&)> KeyCallback

Hiermit speichere ich alle Listener, für die eine Tastaturtaste gedrückt wird. Ich kann sie hinzufügen und die Ereignisse an alle Rückrufe mit versendenfor_each, aber ich weiß nicht, wie man ein bestimmtes tatsächlich löschtKeyCallback Unterschrift von meinem Vektor.

Zum Beispiel möchte ich so etwas:

void InputManager::UnregisterCallback(KeyCallback callback) {
  mKeyCallbacks.erase(std::find(mKeyCallbacks.begin(), mKeyCallbacks.end(), callback));
}

Gemäßboost::function Dokumentation (sieheHier) gibt es keinen Vergleich von Funktionsobjekten, der meine Probleme mit den oben genannten erklären würde. Also stecke ich fest? Gibt es einen schönen Weg, dies zu umgehen?

(Ich lese überboost::signals für Rückrufmechanismen, aber es ist anscheinend ziemlich langsam, und ich erwarte, dass Rückrufe möglicherweise mehrmals pro Frame ausgelöst werden.)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage