A helper class that efficiently stores a custom deleter and is intended to be derived from. If the custom deleter is an empty class, TDeleterHolder derives from it exploiting empty base optimisation (https://en.cppreference.com/w/cpp/language/ebo). Otherwise it stores the custom deleter as a member to allow a function pointer to be used as a custom deleter (a function pointer can't be a base class)