For a pointer pointing to an object outside of its lifetime, behavior is
undefined if the pointer is used to access a non-static data member or call a
non-static member function of the object.
[Example 1: struct S {float f =0;
};
float f(){
S s;
S* p =&s;
s.~S();
return p->f; // undefined behavior, accessing non-static data member after end of lifetime} — end example]