After a long hiatus, we return with a traditionally opaque C++ error message:
error: request for member 'close' in 'out', which is of non-class type 'std::ofstream*'
which like all the best C++ error messages is long, detailed and completely unhelpful. It could be triggered by a number of things but it my case it was this:
out ofstream (outfile.c_str(), ios:app); foo (*out, event[iter]);
The problem was that I'd changed my ofstream out from a pointer to a direct representation. So instead of a dereferenced pointer being passed to foo, I'm dereferencing an actual object. Sorted.