There are three ways to hi(unique_ptr: defining) define tt(unique_ptr)
objects. Each definition contains the usual tt(<type>) specifier between
angle brackets:
    itemization(
    it() The default constructor simply creates a tt(unique_ptr) object that
does not point to a particular block of memory. Its pointer is initialized to
0 (zero):
        verb(
unique_ptr<type> identifier;
        )
    This form is discussed in section ref(UNIQUEPLAIN).
    it() The em(move constructor)  initializes an tt(unique_ptr) object.
Following the use of the move constructor its tt(unique_ptr) argument no
longer points to the dynamically allocated memory and its pointer data member
is turned into a zero-pointer:
        verb(
unique_ptr<type> identifier(another unique_ptr for type);
        )
    This form is discussed in section ref(UNIQUEMOVE).
    it() The form that is used most often initializes a tt(unique_ptr) object
to the block of dynamically allocated memory that is passed to the object's
constructor. Optionally ti(deleter) can be provided. A (free) function (or
function object) receiving the tt(unique_ptr)'s pointer as its argument can be
passed as deleter. It is supposed to return the dynamically allocated
memory to the common pool (doing nothing if the pointer equals zero).
        verb(
unique_ptr<type> identifier (new-expression [, deleter]);
        )
    This form is discussed in section ref(UNIQUENEW).
    )
