Default Constructor

Copy and swap

Destructor

Implicit Move and Copy

Virtual and Protected Destructors