Хранение объектов boost :: function в контейнере

У меня есть векторKeyCallbacks:

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

который я использую для хранения всех слушателей, когда нажата кнопка клавиатуры. Я могу добавить их и отправить события всем обратным вызовам сfor_each, но я не знаю, как на самом деле стереть конкретныйKeyCallback подпись от моего вектора.

Например, я хочу что-то вроде этого:

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

Согласно сboost::function документация (см.Вот), не существует такой вещи, как сравнение функциональных объектов, которая могла бы объяснить мои проблемы с вышеизложенным. Так я застрял? Есть ли хороший способ обойти это?

(Я читал оboost::signals для механизмов обратного вызова, но это, очевидно, довольно медленно, и я ожидаю, что обратные вызовы будут срабатывать, возможно, несколько раз за кадр.)

Ответы на вопрос(2)

Ваш ответ на вопрос