Przechowywanie obiektów funkcji boost :: w kontenerze

Mam wektorKeyCallbacks:

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

których używam do przechowywania wszystkich słuchaczy po naciśnięciu przycisku klawiatury. Mogę je dodawać i wysyłać zdarzenia do wszystkich wywołań zwrotnych za pomocąfor_each, ale nie wiem, jak faktycznie usunąć konkretnyKeyCallback podpis z mojego wektora.

Na przykład chcę coś takiego:

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

Wedługboost::function dokumentacja (patrztutaj), nie ma czegoś takiego jak porównywanie obiektów funkcji, co wyjaśniałoby moje problemy z powyższym. Więc utknąłem? Czy jest jakiś miły sposób na to?

(Czytałem oboost::signals dla mechanizmów zwrotnych, ale najwyraźniej jest dość powolny i oczekuję, że wywołania zwrotne będą uruchamiane prawdopodobnie kilka razy w ramce.)

questionAnswers(2)

yourAnswerToTheQuestion