#include <vector>
#include <iostream>
union U {
int i;
float f;
};
int main() {
std::vector<U> vec;
vec.resize(32);
vec[0].i = 0;
vec[1].f = 42.0;
// But there is no way to tell whether a given element is
// supposed to be an int or a float:
// vec[1] was populated via the 'f' option of the union:
std::cout << "vec[1].i = " << vec[1].i << '\n';
}
ICAgICNpbmNsdWRlIDx2ZWN0b3I+CiAgICAjaW5jbHVkZSA8aW9zdHJlYW0+CgogICAgdW5pb24gVSB7CiAgICAgICAgaW50IGk7CiAgICAgICAgZmxvYXQgZjsKICAgIH07CgogICAgaW50IG1haW4oKSB7CiAgICAgICAgc3RkOjp2ZWN0b3I8VT4gdmVjOwoKICAgICAgICB2ZWMucmVzaXplKDMyKTsKICAgICAgICAKICAgICAgICB2ZWNbMF0uaSA9IDA7CiAgICAgICAgdmVjWzFdLmYgPSA0Mi4wOwoKICAgICAgICAvLyBCdXQgdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgd2hldGhlciBhIGdpdmVuIGVsZW1lbnQgaXMKICAgICAgICAvLyBzdXBwb3NlZCB0byBiZSBhbiBpbnQgb3IgYSBmbG9hdDoKICAgICAgICAvLyB2ZWNbMV0gd2FzIHBvcHVsYXRlZCB2aWEgdGhlICdmJyBvcHRpb24gb2YgdGhlIHVuaW9uOgogICAgICAgIHN0ZDo6Y291dCA8PCAidmVjWzFdLmkgPSAiIDw8IHZlY1sxXS5pIDw8ICdcbic7CiAgICB9