30 pointer_wrap() : ptr(
nullptr) {}
31 pointer_wrap(pointer_wrap &a) : ptr(a.ptr) {}
32 pointer_wrap(T *p) : ptr(p) {}
33 pointer_wrap(
const pointer_wrap &) =
delete;
34 pointer_wrap(pointer_wrap &&) =
delete;
35 explicit operator bool() {
return ptr !=
nullptr; }
36 T *operator=(T *p) {
return ptr = p; }
37 T *operator->() {
return ptr; }
38 const T *operator->()
const {
return ptr; }
39 T &operator*() {
return *ptr; }
40 const T &operator*()
const {
return *ptr; }
41 operator T *() {
return ptr; }
42 operator const T *()
const {
return ptr; }