Initialize the instance of the singleton, can be done explicitly if order of construction matters.
static void initialize()
Destroy the instance of the singleton, can be done explicitly if order of destruction matters.
static void destroy()
Get a reference to the instance of the derived class.
static T& getInstance()