Usually C++ utility classes are interested in using the EBO to avoid an object taking up any more space than is necessary. This works well for a single implementation being inherited, but if there are multiple classes being inherited then this has a small wrinkle in the case where the two types are equivalent for example.
I'm not sure if this is better as a member and being used as mg::compressed_tuple (which would be difficult to actually implement because of a lot of nuance there it seems), or as a Holder which may be easier. It may be a question for a stackoverflow question.