I'm trying to create suicidal pointer. This doesn't have any particular purpose, because it deletes pointer as soon as first pointer is out of scope, but I thought it would be fun.
I did not test the code but it seems the problem is connected with creating a temporary object in the statement
intptr d = new int;
Without optimization the compiler at first creates a temporary object using constructor
Pointer(T* _Ptr) : _Ptr(_Ptr) {}
Then the compiler uses implicitly defined copy constructor to copy the temporary object to d. And then it deletes the temporary object. So d contains invalid pointer.