pointers
unique_ptr
shared_ptr
weak_ptr