What's happening here?



class A {

};

A go(void) {
A a;
return a;
}

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
A& aa = go();
////
//// --
return 0;
}








In case it's not obvious, I am wondering whether aa is valid since it is a reference to an object which is destroyed or something.

\begin{signature}
digital watches and mobile phones.
\end{signature}