Listing 7: Implementing equal_range for selection_t.

class selection_t
{
public:
 ...
template <class SubTuple>
  range_t<const_iterator> equal_range(const SubTuple& sub) const
{
  ...
  range_t<typename arg::const_iterator>
    r(arg_.equal_range(sub));
  selection_t<range_t<typename arg::const_iterator>,Pred>
    s(r,pred_);
  range_t<const_iterator> temp(
    const_iterator(s.begin().base().base(),this),
    const_iterator(s.end().base().base(),this)
  );
  return temp;
}
template<class SubTuple>
  const_iterator lower_bound(const SubTuple& sub) const {...}
template<class SubTuple>
  const_iterator upper_bound(const SubTuple& sub) const {...}
 ...
};