43   typename PB_DS_CLASS_C_DEC::const_iterator,
 
   44   typename PB_DS_CLASS_C_DEC::const_iterator>
 
   46 prefix_range(key_const_reference r_key)
 const 
   48   const access_traits& r_traits = get_access_traits();
 
   49   return (prefix_range(r_traits.begin(r_key), r_traits.end(r_key)));
 
   54   typename PB_DS_CLASS_C_DEC::iterator,
 
   55   typename PB_DS_CLASS_C_DEC::iterator>
 
   57 prefix_range(key_const_reference r_key)
 
   59   return (prefix_range(get_access_traits().
begin(r_key),
 
   60                get_access_traits().
end(r_key)));
 
   65   typename PB_DS_CLASS_C_DEC::const_iterator,
 
   66   typename PB_DS_CLASS_C_DEC::const_iterator>
 
   68 prefix_range(
typename access_traits::const_iterator b,
 
   69          typename access_traits::const_iterator e)
 const 
   72     const_cast<PB_DS_CLASS_C_DEC* 
>(
this)->prefix_range(b, e);
 
   75              const_iterator(non_const_ret.
second)));
 
   80   typename PB_DS_CLASS_C_DEC::iterator,
 
   81   typename PB_DS_CLASS_C_DEC::iterator>
 
   83 prefix_range(
typename access_traits::const_iterator b,
 
   84          typename access_traits::const_iterator e)
 
   86   Node_Itr nd_it = node_begin();
 
   87   Node_Itr end_nd_it = node_end();
 
   89   const access_traits& r_traits = get_access_traits();
 
   94       if (nd_it == end_nd_it)
 
   97       const size_type common_range_length =
 
   98     base_type::common_prefix_len(nd_it, b, e, r_traits);
 
  100       if (common_range_length >= given_range_length)
 
  102       iterator ret_b = this->leftmost_it(nd_it);
 
  103       iterator ret_e = this->rightmost_it(nd_it);
 
  106       nd_it = next_child(nd_it, b, e, end_nd_it, r_traits);
 
  111 typename PB_DS_CLASS_C_DEC::node_iterator
 
  113 next_child(node_iterator nd_it, 
typename access_traits::const_iterator b,
 
  114        typename access_traits::const_iterator e, node_iterator end_nd_it,
 
  115        const access_traits& r_traits)
 
  117   const size_type num_children = nd_it.num_children();
 
  118   node_iterator ret = end_nd_it;
 
  119   size_type max_length = 0;
 
  120   for (size_type i = 0; i < num_children; ++i)
 
  122       node_iterator pot = nd_it.get_child(i);
 
  123       const size_type common_range_length =
 
  124     base_type::common_prefix_len(pot, b, e, r_traits);
 
  126       if (common_range_length > max_length)
 
  129       max_length = common_range_length;
 
  138 operator()(node_iterator , node_const_iterator )
 const 
constexpr pair< typename __decay_and_strip< _T1 >::__type, typename __decay_and_strip< _T2 >::__type > make_pair(_T1 &&__x, _T2 &&__y)
A convenience wrapper for creating a pair from two objects. 
auto end(_Container &__cont) -> decltype(__cont.end())
Return an iterator pointing to one past the last element of the container. 
auto begin(_Container &__cont) -> decltype(__cont.begin())
Return an iterator pointing to the first element of the container. 
iterator_traits< _InputIterator >::difference_type distance(_InputIterator __first, _InputIterator __last)
A generalization of pointer arithmetic. 
_T1 first
second_type is the second bound type 
Struct holding two objects of arbitrary type. 
_T2 second
first is a copy of the first object