| #include <cstdarg> | |
| #include <cstdint> | |
| #include <cstdlib> | |
| #include <ostream> | |
| #include <new> | |
| struct Foo { | |
| enum class Tag { | |
| A, | |
| }; | |
| struct A_Body { | |
| float _0[20]; | |
| }; | |
| Tag tag; | |
| union { | |
| A_Body a; | |
| }; | |
| static Foo A(const float (&_0)[20]) { | |
| Foo result; | |
| for (int i = 0; i < 20; i++) { | |
| ::new (&result.a._0[i]) (float)(_0[i]); | |
| } | |
| result.tag = Tag::A; | |
| return result; | |
| } | |
| bool IsA() const { | |
| return tag == Tag::A; | |
| } | |
| }; | |
| extern "C" { | |
| void root(Foo a); | |
| } // extern "C" |