`basic_iterator` currently only supports input+ iterators. It can be made to support output iterators by returning a proxy reference from `operator*`.