The header also defines class template
pointer_tag_pair
to support storing additional information in unused bits of pointers
. Selection of the bits is implementation-defined,
and the size of the pointer wrapping object is the same as the size of the original pointer
. The header also defines the templates
unique_ptr,
shared_ptr,
weak_ptr,
out_ptr_t,
inout_ptr_t, and various function
templates that operate on objects of these types (
[smartptr])
.