Когда должен быть 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;
}

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

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