https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94674
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- Your mistake is thinking that the iterators of views are like the iterators you're used to. They're not. They have different properties (e.g. they might not be copyable, they might not have operator->, they might not define iterator_category) and std::iterator_traits is for use with the old kind of iterators, not the new ones.