namespace std {
template<class Container>
class insert_iterator {
protected:
Container* container;
typename Container::iterator iter;
public:
using iterator_category = output_iterator_tag;
using value_type = void;
using difference_type = void;
using pointer = void;
using reference = void;
using container_type = Container;
insert_iterator(Container& x, typename Container::iterator i);
insert_iterator& operator=(const typename Container::value_type& value);
insert_iterator& operator=(typename Container::value_type&& value);
insert_iterator& operator*();
insert_iterator& operator++();
insert_iterator& operator++(int);
};
template<class Container>
insert_iterator<Container> inserter(Container& x, typename Container::iterator i);
}
insert_iterator(Container& x, typename Container::iterator i);
Effects:
Initializes
container
with
addressof(x) and
iter
with
i. insert_iterator& operator=(const typename Container::value_type& value);
Effects:
As if by:
iter = container->insert(iter, value);
++iter;
insert_iterator& operator=(typename Container::value_type&& value);
Effects:
As if by:
iter = container->insert(iter, std::move(value));
++iter;
insert_iterator& operator*();
insert_iterator& operator++();
insert_iterator& operator++(int);
template<class Container>
insert_iterator<Container> inserter(Container& x, typename Container::iterator i);
Returns:
insert_iterator<Container>(x, i).