In the follwong program a class-type temporary is cast to a refrence and they changed:

struct A 
{
    int a;
    A() { a = 100; }
};
void f(A& x) { x.a = 200; };
int main()
{
    f((A&)A{});
}

No errors in Visual Studio and GCC. But is it safe to use such cast, instead of useing rvalue reference, in Standard C++?