## Class template basic_iterator

zeep::xml::container::basic_iterator

## Synopsis

    // In header: </home/maarten/projects/libzeep/zeep/xml/node.hpp>

    template<typename NodeType>
    class basic_iterator {
    public:
      // types
      typedef std::iterator< std::bidirectional_iterator_tag, NodeType * > base_type;
      typedef base_type::reference                                         reference;
      typedef base_type::pointer                                           pointer;

      // construct/copy/destruct
      basic_iterator();
      basic_iterator(NodeType *);
      basic_iterator(const basic_iterator &);
      basic_iterator& operator=(const basic_iterator &);
      basic_iterator& operator=(const NodeType *);

      // public member functions
      reference operator*();
      pointer operator->() const;
      basic_iterator & operator++();
      basic_iterator operator++(int);
      basic_iterator & operator--();
      basic_iterator operator--(int);
      bool operator==(const basic_iterator &) const;
      bool operator!=(const basic_iterator &) const;
      template<typename RNodeType> bool operator==(const RNodeType) const;
      template<typename RNodeType> bool operator!=(const RNodeType) const;
      operator const pointer() const;
      operator pointer();
      template<> container::basic_iterator< element > & operator++();
      template<> container::basic_iterator< element > & operator--();
      template<> container::basic_iterator< const element > & operator++();
      template<> container::basic_iterator< const element > & operator--();
      template<> container::basic_iterator< node > & operator++();
      template<> container::basic_iterator< node > & operator--();
      template<> container::basic_iterator< const node > & operator++();
      template<> container::basic_iterator< const node > & operator--();
    };

## Description

### `basic_iterator` public construct/copy/destruct

1.     basic_iterator();

2.     basic_iterator(NodeType * e);

3.     basic_iterator(const basic_iterator & other);

4.     basic_iterator& operator=(const basic_iterator & other);

5.     basic_iterator& operator=(const NodeType * n);

### `basic_iterator` public member functions

1.     reference operator*();

2.     pointer operator->() const;

3.     basic_iterator & operator++();

4.     basic_iterator operator++(int);

5.     basic_iterator & operator--();

6.     basic_iterator operator--(int);

7.     bool operator==(const basic_iterator & other) const;

8.     bool operator!=(const basic_iterator & other) const;

9.     template<typename RNodeType> bool operator==(const RNodeType n) const;

10.     template<typename RNodeType> bool operator!=(const RNodeType n) const;

11.     operator const pointer() const;

12.     operator pointer();

13.     template<> container::basic_iterator< element > & operator++();

14.     template<> container::basic_iterator< element > & operator--();

15.     template<> container::basic_iterator< const element > & operator++();

16.     template<> container::basic_iterator< const element > & operator--();

17.     template<> container::basic_iterator< node > & operator++();

18.     template<> container::basic_iterator< node > & operator--();

19.     template<> container::basic_iterator< const node > & operator++();

20.     template<> container::basic_iterator< const node > & operator--();