c ++: const odwołanie do wartości rvalue

//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
}

Jakie są różnice między doSomething a doSomething2 i które z nich są do wyboru?
Czy bezpieczne jest używanie stałego odwołania do zwróconej wartości r w cokolwiek?
Czy doSomething2 tworzy kopię zwracanej wartości rvalue, czy kompilator może tutaj dokonać optymalizacji wartości rvalue?

questionAnswers(3)

yourAnswerToTheQuestion