Union в языке по умолчанию работает как std::variant в c++
Также как и функции с контролем параметров юнионы могут выбирать и переключать тип в зависимости например диапазона данных.