#include<iostream>
struct Test
{
    int n ;
    ~Test(){}
    Test& operator =(int v)
    {
        n=v;
        return *this;
    }
};
Test * ptr = nullptr;
void g(Test && p)
{
    std::cout << "&&";
}
void g(Test & p)
{
    ptr = &p;
    std::cout << "&";
}
void f(Test&& t)
{
    g(t);
}
void buggy()
{
    *ptr  = 5;
}
int main()
{ 
    f(Test());
    buggy();
    std::cin.ignore(); 
} 
Just to be sure, the above code lead to an undefined behavior as we keep address of a tempory ?
 
     
     
    