pasando el puntero const por referencia

Estoy confundido de por qué el siguiente código no es capaz de compilar

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

    return 0;
}

El compilador da error como:

error: inicialización de referencia no válida de tipo 'const float * &' de la expresión de tipo 'float *'

pero cuando intento pasar sin referencia en foo, está compilando bien.

Creo que debería mostrar el mismo comportamiento si paso por referencia o no.

Gracias,

Respuestas a la pregunta(1)

Su respuesta a la pregunta