I faced a problem of overloading the ->() operator while implementing the Iterator class. How should this operator be overloaded?
class iterator
{
private:
    pair<Key_t, Val_t> p;
public:
    iterator()
    {
    }
    iterator(const iterator &i)
    {
        p = i.p;
    }
    iterator(Key_t key, Val_t v)
    {
        p = make_pair(key,v);
    }
    pair<const Key_t,Val_t>& operator *() const
    {
        return p;
    }
    iterator& operator = (const iterator &iter)
    {
        this->p = iter;
        return *this;
    }
};
tried this way unsuccessfully
&(pair<const Key_t,Val_t>&) operator ->() const
    {
        return &(**this);
    }
 
    