Я просматриваю некоторый код, и все вызовы функции, возвращающей строку, присваиваются ссылке. Функция prototype выглядит примерно так:
std::string GetPath(const std::string& top);
и используется как
std::string& f = GetPath(cw);
или
const std::string& f = GetPath(cw);
Зачем использовать ссылку здесь вместо
std::string f = GetPath(cw);