41 #ifndef PB_DS_BRANCH_POLICY_BASE_HPP 42 #define PB_DS_BRANCH_POLICY_BASE_HPP 51 template<
typename Node_CItr,
typename Node_Itr,
typename _Alloc>
55 typedef typename Node_Itr::value_type it_type;
56 typedef typename std::iterator_traits<it_type>::value_type value_type;
57 typedef typename value_type::first_type key_type;
59 typedef typename remove_const<value_type>::type rcvalue_type;
60 typedef typename remove_const<key_type>::type rckey_type;
62 typedef typename _Alloc::template rebind<rcvalue_type>::other rebind_v;
63 typedef typename _Alloc::template rebind<rckey_type>::other rebind_k;
65 typedef typename rebind_v::reference reference;
66 typedef typename rebind_v::const_reference const_reference;
67 typedef typename rebind_v::const_pointer const_pointer;
69 typedef typename rebind_k::const_reference key_const_reference;
71 static inline key_const_reference
72 extract_key(const_reference r_val)
73 {
return r_val.first; }
80 {
return const_cast<branch_policy*>(
this)->end(); }
87 template<
typename Node_CItr,
typename _Alloc>
91 typedef typename Node_CItr::value_type it_type;
92 typedef typename std::iterator_traits<it_type>::value_type value_type;
93 typedef typename remove_const<value_type>::type rcvalue_type;
94 typedef typename _Alloc::template rebind<rcvalue_type>::other rebind_v;
95 typedef typename rebind_v::reference reference;
96 typedef typename rebind_v::const_reference const_reference;
97 typedef typename rebind_v::const_pointer const_pointer;
99 typedef value_type key_type;
100 typedef typename rebind_v::const_reference key_const_reference;
102 static inline key_const_reference
103 extract_key(const_reference r_val)
119 #endif // #ifndef PB_DS_BRANCH_POLICY_BASE_HPP Primary template, base class for branch structure policies.
GNU extensions for policy-based data structures for public use.