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));