c ++: постоянная ссылка на значение

//old school '98 c++, no C++0x stuff
std::string getPath();

void doSomething()
{
    const std::string &path = getPath(); //const reference to an rvalue
    ... // doSomething with path
}

void doSomething2()
{
    const std::string path = getPath(); //regular variable
    ... // doSomething with path
}

Каковы различия между doSomething и doSomething2 и какой из них предпочтительнее?
Безопасно ли использовать константную ссылку на возвращенное значение в doSomething?
Создает ли doSomething2 копию возвращаемого значения rvalue, разрешено ли здесь компилятору выполнять оптимизацию значения rvalue?

Ответы на вопрос(3)

Ваш ответ на вопрос