As for your example, your understanding of C++'s evaluation rules is wrong. When dealing with uninitialized variables, undefined behaviour is triggered when the lvalue of the variable is converted to an rvalue. Since the address-of operator involves no such conversion, no undefined behaviour is triggered. See 4.1/1.
The subexpression x merely gets the lvalue, which is a valid operation for uninitialized variables.