[boost] passing ranges or output iterators to virtual functions