Eu já usei sindicatos confortavelmente; hoje fiquei alarmado quando li este post e soube que esse código union ARGB { uint32_t colour; struct componentsTag { uint8_t b; uint8_t g; uint8_t r; uint8_t a; } components; } pixel; pixel.colour = 0xff040201; // ARGB::colour is the active member from now on // …
Isso é apenas para satisfazer minha própria curiosidade. Existe uma implementação disso: float InvSqrt (float x) { float xhalf = 0.5f*x; int i = *(int*)&x; i = 0x5f3759df - (i>>1); x = *(float*)&i; x = x*(1.5f - xhalf*x*x); return x; } em Rust? Se existir, publique o código. Eu tentei …
Em sua recente palestra “Type punping in C ++ moderno”, Timur Doumler disse que std::bit_castnão pode ser usado para converter um bit floatem um, unsigned char[4]porque matrizes no estilo C não podem ser retornadas de uma função. Devemos usar std::memcpyou aguardar até C ++ 23 (ou mais recente) quando algo …