Неинициализированные ссылки не могут существовать.
К сожалению, при инициализации можно делать забавные вещи. Вы могли бы также написать
const int& a = foobar(a) ? 1 : 2;
или по делу
const int& a = a;
Я полагаю, что когда компилятор работает слева направо, a действительно находится в области видимости справа, поэтому технически вы должны иметь возможность использовать его, и в лучшем случае он может предупредить:
"ComeauTest.c", строка 9: предупреждение: переменная "a" используется до установки ее значения
const int& a = foobar(a) ? 1 : 2;
^
Естественно, это может привести только к неопределенному поведению, как при использовании любой неинициализированной переменной.
Ваш пример в порядке, поскольку вы не используете ссылку до ее инициализации.