La funzione asio :: buffer ha (void*, size_t)
e (PodType(&)[N])
overload.
Non volevo scrivere il brutto codice di tipo C (&x, sizeof(x))
, quindi ho scritto questo:
SomePacket packet[1]; // SomePacket is POD
read(socket, asio::buffer(packet));
foo = packet->foo;
Ma quel packet->
sembra un po 'strano - il packet
è un array dopo tutto.
(E packet[0].
non ha un aspetto migliore.)
Ora, penso che sia una buona idea scrivere un codice del genere. Forse dovrei attenermi al codice di stile C non sicuro con void*
e sizeof
?
Aggiornamento: ecco un altro esempio, per scrivere un pacchetto:
SomePacket packet[1]; // SomePacket is POD
packet->id = SomePacket::ID;
packet->foo = foo;
write(socket, asio::buffer(packet));