РЕДАКТИРОВАТЬ: сделал ошибку. Прокси-итераторы не допускаются в C ++ 17.
Я думаю, что это невозможно. Первое: эта реализация будет содержать все гарантии сложности и для большинства из них будет лучше, чем требования.
Второе: вам не разрешено создавать прокси-итератор при использовании стандартного контейнера, так как они должны были возвращать реальные ссылки в некоторых точках. (Std :: bitset, упомянутый @Christophe, не является контейнером и имеет прокси-ссылку в своем определении. Std :: vector является известным примером нарушения гарантий.). Поэтому невозможно использовать эту реализацию.
Редактировать: благодарю @NicolBolas за указание, что прокси-итераторы по-прежнему не разрешены.