operator overloading cppreference com
If the shared pointer p owns a deleter of type cv-unqualified Deleter (e.g. if it was created with one of the constructors that take a deleter as a parameter), then returns a pointer to the deleter. Performs contextual conversion to bool, user-defined classes that are intended to be used in boolean contexts could provide only operator bool and need not overload operator!. Creates and initializes objects with dynamic storage duration, that is, objects whose lifetime is not necessarily limited [...]
