template <typename StoredIterator, class Compare>
class dereference
{
public:
typedef StoredIterator first_argument_type;
typedef StoredIterator second_argument_type;
typedef typename Compare::result_type result_type;
dereference(const Compare &comp = Compare())
: comp_(comp) {}
result_type operator()(first_argument_type first,
second_argument_type second)
{
return comp_(*first, *second);
}
private:
Compare comp_;
};