So... hmm... do we really need the std::move in two places - when passing the data in (below) and when receiving it?  I thought that the && notation meant you didn't have to do that here?

I'm going to experiment and find out right now!