Ссылки легче получить правильно.
Ваша проблема с литералами в том, что вы не используете константные ссылки? Вы не можете привязать временный (созданный литералом) к неконстантной ссылке, потому что нет смысла менять его. Вы можете привязать один к константной ссылке.
В частности, при передаче аргумента функции, и функция не собирается его менять, и это не встроенный тип, передается по константной ссылке. Он работает так же, как передача по значению, за исключением того, что не требует вызова конструктора копирования.
Указатели полезны тем, что имеют гарантированное недействительное значение, которое вы можете проверить. Иногда это не имеет значения, а иногда очень важно. Конечно, вы обычно не можете передавать литерал по указателю, если (в случае строкового литерала) это уже не так.
В некоторых стандартах кодирования говорится, что по неконстантной ссылке ничего не должно передаваться, поскольку в точке вызова не указывается, что аргумент может быть изменен функцией. В этом случае вам потребуется пройти по указателю. Я не одобряю это, особенно потому, что инструменты программирования упрощают получение сигнатуры функции, поэтому вы можете увидеть, может ли функция изменить аргумент. Однако при работе в группе или на предприятии согласованность стилей важнее, чем любой отдельный элемент стиля.