Thank you for reporting the problem.
The documentation is in fact incorrect. The implementation of parallel_do may copy processed itemsduring its work, this is why there are requirements for argument_type to have a copy constructor and a destructor. Obviously it does not make sense for operator() to take the reference to an item if that reference can point to an internal copy and not to the original item.
I apologize for our documentation misleading you.