41#ifdef PB_DS_CLASS_C_DEC 
   46join_prep(PB_DS_CLASS_C_DEC& other)
 
   48  PB_DS_ASSERT_VALID((*
this))
 
   49  PB_DS_ASSERT_VALID(other)
 
   50  if (other.m_size == 0)
 
   60    Cmp_Fn::operator()(PB_DS_V2F(m_p_head->m_p_right->m_value),
 
   61                       PB_DS_V2F(other.m_p_head->m_p_left->m_value));
 
   64    Cmp_Fn::operator()(PB_DS_V2F(other.m_p_head->m_p_right->m_value),
 
   65                       PB_DS_V2F(m_p_head->m_p_left->m_value));
 
   67  if (!greater && !lesser)
 
   73  m_size += other.m_size;
 
   74  _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
 
   81join_finish(PB_DS_CLASS_C_DEC& other)
 
   90split_prep(key_const_reference r_key, PB_DS_CLASS_C_DEC& other)
 
   92  PB_DS_ASSERT_VALID((*
this))
 
   93  PB_DS_ASSERT_VALID(other)
 
   98      PB_DS_ASSERT_VALID((*
this))
 
   99      PB_DS_ASSERT_VALID(other)
 
  103  if (Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_left->m_value)))
 
  106      PB_DS_ASSERT_VALID((*
this))
 
  107      PB_DS_ASSERT_VALID(other)
 
  111  if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_right->m_value)))
 
  113      PB_DS_ASSERT_VALID((*
this))
 
  114      PB_DS_ASSERT_VALID(other)
 
  121      PB_DS_ASSERT_VALID((*
this))
 
  122      PB_DS_ASSERT_VALID(other)
 
  126  _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);)
 
  133split_finish(PB_DS_CLASS_C_DEC& other)
 
  135  other.initialize_min_max();
 
  137  m_size -= other.m_size;
 
  138  initialize_min_max();
 
  139  PB_DS_ASSERT_VALID((*
this))
 
  140  PB_DS_ASSERT_VALID(other)
 
  144typename PB_DS_CLASS_C_DEC::size_type
 
  146recursive_count(node_pointer p)
 const 
  150  return 1 + recursive_count(p->m_p_left) + recursive_count(p->m_p_right);
 
constexpr iterator_traits< _InputIterator >::difference_type distance(_InputIterator __first, _InputIterator __last)
A generalization of pointer arithmetic.