przekazywanie stałego wskaźnika przez odniesienie

Jestem zdezorientowany, dlaczego następujący kod nie jest w stanie się skompilować

int foo(const float* &a) {
    return 0;
}
int main() {
    float* a;
    foo(a);

    return 0;
}

Kompilator podaje błąd jako:

błąd: niepoprawna inicjalizacja odwołania typu „const float * &” z wyrażenia typu „float *”

ale gdy próbuję przekazać bez referencji w foo, kompiluje się dobrze.

Myślę, że to powinno pokazać to samo zachowanie, czy przejdę przez odniesienie, czy nie.

Dzięki,

questionAnswers(1)

yourAnswerToTheQuestion