Instead of a boost's schizophrenic single transform iterator class that tries to be both an input and an output iterator at the same time depending on the template parameters, I have two transform iterator classes, one a input iterator and one an output iterator. This simplifies compiles (one of the goals for my code library) as well as making the output iterator behave more like I expect it to (compared to boost::transform_iterator).
There's also a schizophrenic single transform iterator class I might add that does many of the things I complain about with boost::transform_iterator, except I label mine with a big Unsafe in the class name, to remind myself that it lies when it claims to be a random access iterator. Oh, and it's behaviour when used as a output iterator also seems to be happier than boost's version. (Not happy, but happier.)