Ссылочные аргументы были изначально придуманы, AFAIK, с одной стороны: семантика перегрузки операторов .Например, оператор [] просто должен возвращать ссылку.
Тогда был предмет большой дискуссии о том, следует ли использовать «скрытый указатель» для чего-либо еще.
Во многих документах по соглашениям о разработке многих компаний говорится, что «никогда не используйте ссылки. Если вам нужен указатель, скажите так».
Однако было обнаружено, что ссылки имеют одно важное преимущество (нет,не синтаксис сахар).Вот что: ссылка гарантированно действительна, если только вы не усердно работаете, чтобы ее сломать.
Лично я до сих пор не понимаю, почему я не могу сделать это в C ++:
int a1, a2;
int &b = a1;
&b = a2; // Error. address of referenced is not an lvalue. Why?!