In Visual Studio 2012RC there are some non-standard extensions. For example this code compiles:
#include
using namespace std;
void value(str
Basically, VS will allocate the space somewhere and just let the reference point to it, as if it was a reference-to-const without the constness (or in C++11 an rvalue reference).
You can disable this behaviour with the /Za (disable language extensions) compiler switch under
Properties -> C/C++ -> Language
If I remember correctly.