Effects: If 
I models 
forward_iterator, equivalent to:
common_iterator tmp = *this;
++*this;
return tmp;
   
Otherwise, equivalent to:
postfix-proxy p(**this);
++*this;
return p;
where postfix-proxy is the exposition-only class:
class postfix-proxy {
  iter_value_t<I> keep_;
  constexpr postfix-proxy(iter_reference_t<I>&& x)
    : keep_(std::forward<iter_reference_t<I>>(x)) {}
public:
  constexpr const iter_value_t<I>& operator*() const noexcept {
    return keep_;
  }
};