passando ponteiro const por referência

Estou confuso porque o seguinte código não é capaz de compilar

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

    return 0;
}

Compilador dá erro como:

erro: inicialização inválida da referência do tipo 'const float * &' da expressão do tipo 'float *'

mas quando tento passar sem referência no foo, está compilando bem.

Eu acho que deveria mostrar o mesmo comportamento se eu passar por referência ou não.

Obrigado,

questionAnswers(1)

yourAnswerToTheQuestion