## Class template iterator_impl

zeep::xml::iterator_impl — generic iterator class.

## Synopsis

    // In header: <zeep/xml/node.hpp>

    template<typename NodeType,
             typename ContainerNodeType>
    class iterator_impl {
    public:
      // types
      typedef                                ;
      typedef   ;
      typedef basic_node_list<  ;
      typedef         ;
      typedef                               ;
      typedef                          ;
      typedef                            ;
      typedef                            ;

      // construct/copy/destruct
      () = ;
      (iterator_impl &) = ;
      template<typename OtherNodeType, typename OtherContainerNodeType>
        (iterator_impl< );
      (container_type &);
      (container_type &, );
      ();
      (iterator_impl &&) ;
      template<typename Iterator,
                 = >
        ();
      iterator_impl & (iterator_impl &);
      iterator_impl & (iterator_impl &&) ;
      template<typename Iterator,
                 = >
        iterator_impl & ();

      // public member functions
       ();
       () ;
      iterator_impl & ();
      iterator_impl ();
      iterator_impl & ();
      iterator_impl ();
       (iterator_impl &) ;
       (iterator_impl &) ;
      template<typename RNodeType>  () ;
      template<typename RNodeType>  () ;
      iterator_impl & ();
      iterator_impl & ();
      iterator_impl () ;
      iterator_impl () ;
       (iterator_impl &) ;
      () ;
      ();

      // private member functions
       () ;
       ();
       ();
       ();
       ();
       ();
    };

## Description

We can have iterators that point to nodes, elements and attributes. Iterating over nodes is simply following next/prev. But iterating elements is a bit more difficult, since you then have to skip nodes in between that are not an element, like comments or text.

### `iterator_impl` public construct/copy/destruct

1.     () = ;

2.     (iterator_impl & i) = ;

3.     template<typename OtherNodeType, typename OtherContainerNodeType>
         (iterator_impl<  i);

   copy constructor, kind of

4.     (container_type & container);

   create iterator pointing to begin of parent element

5.     (container_type & container,  current);

   create iterator pointing to end of parent element

6.     ( current);

   constructor taking a node pointer

7.     (iterator_impl && i) ;

8.     template<typename Iterator,
                  = >
         ( i);

9.     iterator_impl & (iterator_impl & i);

10.     iterator_impl & (iterator_impl && i) ;

11.     template<typename Iterator,
                   = >
          iterator_impl & ( i);

### `iterator_impl` public member functions

1.      ();

2.      () ;

3.     iterator_impl & ();

4.     iterator_impl ();

5.     iterator_impl & ();

6.     iterator_impl ();

7.      (iterator_impl & other) ;

8.      (iterator_impl & other) ;

9.     template<typename RNodeType>  ( n) ;

10.     template<typename RNodeType>  ( n) ;

11.     iterator_impl & ( i);

12.     iterator_impl & ( i);

13.     iterator_impl ( i) ;

14.     iterator_impl ( i) ;

15.      (iterator_impl & other) ;

16.     () ;

17.     ();

### `iterator_impl` private member functions

1.      () ;

2.      ();

3.      ();

4.      ();

5.      ();

6.      ();