Using serialise/deserialise is I think the only way to do it without
specialising to one object type. I don't think these functions have a
huge cost with boost implementation, but I'd be curious to hear about
any experience out there.


serialize/deserialize are a very significant portion of sending large images, especially over loopback (vague recollection of about 2/3rds of the time from some timings I did while optimizing intraprocess passing, but that may not be quite right).  Most of serializing/deserializing an Image is memcpy, but that still takes time.

We've talked about a system that allocates the messages themselves out of shared memory, but that's a huge can of worms.  Nodelets (currently in the common 1.1 experimental releases) are the preferred path forward at this point.

Josh