Rather than a manually managed union, use `std::variant` which is generally safer. E.g. an invalid access will now throw an exception instead of causing undefined behavior (which may or may not crash, or cause a data corruption). Code is also simplified this way. Pull Request: https://projects.blender.org/blender/blender/pulls/125494