Almacenando objetos boost :: function en un contenedor

Tengo un vector deKeyCallbacks:

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

que utilizo para almacenar todos los oyentes cuando se presiona un botón del teclado. Puedo agregarlos y enviar los eventos a todas las devoluciones de llamada confor_each, pero no sé cómo borrar realmente una específicaKeyCallback firma de mi vector.

Por ejemplo quiero algo como esto:

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

De acuerdo aboost::function documentación (veraquí), no existe tal cosa como comparar objetos de función, lo que explicaría mis problemas con lo anterior. Entonces, ¿estoy atascado? ¿Hay alguna manera agradable de evitar esto?

(Yo leo sobreboost::signals para los mecanismos de devolución de llamada, pero al parecer es bastante lento, y espero que las devoluciones de llamada se activen posiblemente varias veces por trama.)

Respuestas a la pregunta(2)

Su respuesta a la pregunta