Si tengo la siguiente estructura:¿Es una estructura de un elemento compatible con el elemento en sí?
struct Foo { int a; };
Es el código abajo conforme con el estándar de C++? Quiero decir, ¿no puede generar un "Comportamiento Indefinido"?
Foo foo;
int ifoo;
foo = *reinterpret_cast<Foo*>(&ifoo);
void bar(int value);
bar(*reinterpret_cast<int*>(&foo));
auto fptr = static_cast<void(*)(...)>(&bar);
fptr(foo);
Estoy bastante seguro de que la estructura puede tener requisitos de alineación más estrictos que la int, por lo que te encuentras con UB cuando reinterpretas de 'int' a' Foo'. No estoy seguro de la otra forma. – avakar