@ariddell, I'm thinking of just instantiating the writer with the names. Then every call to the writer after that will be values. No passing of names, no ability to reset the names.
This is sort of a trick question. I really don't think we need to pass around the vector of strings, especially down at where the inference algorithm uses them. But the IO will only suffer when it's actually hitting the disk. I can imagine an implementation of the writer deciding to do what is natural for you and write out parameter name and parameter value while another one only writing out the values.