Общепринятая трактовка ссылки, которая в т.ч. упоминается в стандарте, следующая:
"Ссылка — это (её можно представить как) альтернативное имя объекта.
А имя — это идентификатор (п.3/4), т.е. последовательность букв и цифр (п.2.10/1)
А если ссылка является типом возвращаемого значения:
T& func();
То, что считать "альтернативным именем", при вызове этой функции?
func()
Можно сказать, что альтернативным именем является выражение
func().
Если да, то как объяснить, что два одинаковых выражения, например:
func() + func()
по сути два альтернативных имени, возможно, даже двух разных объектов?
P.S. Понимаю, что вопросы запутанные и несколько дурацкие, но вопросы терминологии частенько именно такими и бывают