Когда должен быть RVO?
Из следующего кода: если произошел RVO, я ожидаю увидеть 2 адреса, указывающие на одно и то же местоположение, однако это не так (мой компилятор - MS VC9.0)
#include
#include
std::string foo(std::string& s)
{
std::cout < "address: " < (unsigned int)(&s) < std::endl;
return s;
}
int main()
{
std::string base = "abc";
const std::string& s = foo(base);
std::cout < "address: " < (unsigned int)(&s) < std::endl;
std::cout < s < std::endl;
return 0;
}