Трудно сказать, не видя его использования, но вы указываете, что ссылка - это уровень косвенности. Вы нашли бы это странным, если бы это был указатель на указатель? Это довольно часто - на самом деле вы имеете дело с ними, когда принимаете аргументы командной строки и получаете указатели на указатели на символы. Другой пример: если вы делаете хеш-карту с использованием сегментов и хотите иметь возможность вернуть указатель на указатель, который запустил блок.
Дело в том, что иногда вам нужно несколько уровней косвенности. Это правда, что смешивание указателей и ссылок может быть странным, но для этого есть веские причины. Одной из распространенных причин является необходимость взаимодействия кода C ++ с C apis. Многие системные вызовы POSIX требуют указателей void, которые передаются, а затем изменяются, поэтому рассматриваемая функция C ++ может выступать в качестве оболочки вокруг этого.