struct A {
int i;
char c[];
};
int main(int argc, char *argv[])
{
char mem1[sizeof(A) + 2 * sizeof(char)];
char mem2[sizeof(A) + 2 * sizeof(char)];
A &a1 = *reinterpret_cast(mem1);
A &a2 = *reinterpret_cast(mem2);
a1.i = 2;
a2.i = 0;
a1.c[0] = 'a';
a2.c[0] = 'c';
a1.c[1] = 'b';
a2.c[1] = 'd';
a2 = a1;
return !((a2.i == 2) && (a2.c[0] == 'c') && (a2.c[1] == 'd'));
}