C'est "grave" pour plusieurs raisons :
- tu casses une règle du C++ (même si tu ne comprends pas forcément ce que ça implique, ça ne sent déjà pas bon), donc le résultat n'est pas garanti à 100%
- tu vas inévitablement te heurter à des problèmes d'endianness
Je te conseille plutôt ça :
Packet& operator <<(Packet& packet,const Int64 i)
{
Uint32 ui1 = static_cast<Uint32>(i >> 32);
Uint32 ui2 = static_cast<Uint32>(i & 0xFFFFFFFF);
packet << ui1 << ui2;
return packet;
}
Packet& operator >>(Packet& packet, Int64& i)
{
Uint32 ui1, ui2;
packet >> ui1 >> ui2;
i = (static_cast<Int64>(ui1) << 32) | ui2;
return packet;
}