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 {...}
...
};