Расширяет объединения, чтобы разрешить любой тип, а не просто "простые старые данные", предоставляя вам больше гибкости для хранения различных типов данных в одном месте, не прибегая к ручному взлому указателей.
Цена, которую вы платите за это, заключается в том, что вы должны вести осторожный бухгалтерский учет. С простым старым назначением объединения данных было достаточно изменить «текущий тип», и чтение неправильного типа могло привести к искаженным данным, но не намного больше. При непростом удалении старых данных вы должны следить за текущим типом и вызывать конструкторы и деструкторы corect вручную, чтобы изменить текущий тип и правильно очистить объекты при уничтожении объединения в целом. Если вы попытаетесь прочитать или написать тип wring, вероятно, произойдут плохие вещи