namespace std { namespace experimental { namespace ranges { inline namespace v1 {
template <class Container>
class insert_iterator {
public:
using container_type = Container;
using difference_type = ptrdiff_t;
insert_iterator();
insert_iterator(Container& x, iterator_t<Container> i);
insert_iterator&
operator=(const value_type_t<Container>& value);
insert_iterator&
operator=(value_type_t<Container>&& value);
insert_iterator& operator*();
insert_iterator& operator++();
insert_iterator& operator++(int);
private:
Container* container; iterator_t<Container> iter; };
template <class Container>
insert_iterator<Container> inserter(Container& x, iterator_t<Container> i);
}}}}