struct I {using value_type =int;
using difference_type =int;
intoperator*()const;
I&operator++();
I operator++(int);
I&operator--();
I operator--(int);
booloperator==(I)const;
};
iterator_traits<I>::iterator_category denotes input_iterator_tag,
and ITER_CONCEPT(I) denotes random_access_iterator_tag.