Armazenando objetos boost :: function em um contêiner

Eu tenho um vetor deKeyCallbacks:

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

que eu uso para armazenar todos os ouvintes quando um botão do teclado é pressionado. Eu posso adicioná-los e despachar os eventos para todos os callbacks comfor_each, mas eu não sei como realmente apagar um específicoKeyCallback assinatura do meu vetor.

Por exemplo eu quero algo assim:

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

De acordo comboost::function documentação (verAqui), não há tal coisa como comparar objetos de função, o que explicaria meus problemas com o acima. Então estou preso? Existe alguma maneira legal de contornar isso?

(Eu leio sobreboost::signals para mecanismos de retorno de chamada, mas aparentemente é muito lento, e espero que os retornos de chamada sejam disparados possivelmente várias vezes em um quadro.)

questionAnswers(2)

yourAnswerToTheQuestion