The more I think about it, the more I think that #cplusplus OutputIterators are a mistake. At best they work ok with pointers, but that throws away size info. Outside of pointers, there is pretty much a forced size check on each call to operator* that may or may not be elided. It often isn't and types like back_inserter which calls push_back will almost never(not sure if it can) elide the check.
I think we would be much better off with a Writeable interface where the destination can do 1 size check for the full write instead of N of them.