key_exists bekommt nun eine Referenz. Diese ist konstant (also ist die Speicherstelle konstant). find bekommt eine Referenz des Zeigers, also ist in find der Zeiger konstant, die Speicherstelle aber theoretisch nicht mehr, oder? Genau das würde ja durch den const_cast behoben.
Es würde sich übersetzen lassen, ja, behoben wird nichts, wenn die Variable auf die der const Pointer zeigt, wirklich konstant ist (und nicht nur über ein paar Funktionsaufrufe so getan wird, als wäre er es), führt ein schreibender Zugriff zum Laufzeitfehler.