# ``trie`::const_node_iterator` Interface

Const node iterator.

This is an "iterator to an iterator" - it iterates over nodes, and de-referencing it returns one of the tree's const iterators

## Public Types and Constants

### General Container Definitions

Type | Definition | Description
    size_type
    container_base::size_type
| Size type.

### Iterator Definitions

Type | Definition | Description
    iterator_category
    trivial_iterator_tag
| Category. This tag identifies that the iterator has none of the STL's iterators' movement abilities.
    difference_type
    void
| Difference type.

### Value-Type Definitions

Type | Definition | Description
    value_type
    container_base::const_iterator
| Iterator's value type.
    reference
    value_type
| Iterator's reference type.
    const_reference
    value_type
| Iterator's const `reference` type.
    e_access_traits
    trie::e_access_traits
| Element access traits.
    const_e_iterator
    typename e_access_traits::const_iterator
| A key's element const iterator.

### Metadata Definitions

These are only defined if `basic_tree`::Node_Update is not `null_trie_node_update`

Type | Definition | Description
    metadata_type
    typename basic_tree::Node_Update::metadata_type
| Metadata type.
    const_metadata_reference
    typename Allocator::template rebind<
        metadata_type>::other::const_reference
| Const metadata `reference` type.

## Public Methods

### Constructors, Destructor, and Related

Method | Description
    inline
      const_node_iterator
      ()
| Default constructor.

### Access Methods

Method | Description
    inline std::pair<
        const_e_iterator,
        const_e_iterator>
      valid_prefix
      () const
| Subtree valid prefix. Returns the common prefix range of all nodes in this node's subtree.
    inline const_reference
      operator*
      () const
| Const access; returns the const iterator associated with the current leaf. Should be called only for leaf nodes.

### Metadata Access Methods

These are only defined if `basic_tree`::Node_Update is not `null_trie_node_update`

Method | Description
    inline const_metadata_reference
      get_metadata
      () const
| Metadata access.

### Movement Methods

Method | Description
    inline size_type
      num_children
      () const
| Returns the number of children in the corresponding node. If the number of children is 0, then the corresponding node is a leaf; otherwise, it is not a leaf.
    const_node_iterator
      get_child
      (size_type i) const
| Returns a const node iterator to the corresponding node's `i`-th child.

### Comparison Methods

Method | Description
    inline bool
      operator==
      (const const_node_iterator &other) const
| Compares content to a different iterator object.
    inline bool
      operator!=
      (const const_node_iterator &other) const
| Compares content (negatively) to a different iterator object.