Otherwise, if iterator_traits<I> names a specialization generated
from the primary template, then ITER_CONCEPT(I)
denotes random_access_iterator_tag.
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.