https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121956
--- Comment #4 from 康桓瑋 <hewillk at gmail dot com> --- (In reply to Andrew Pinski from comment #2) > Note I don't think P2165R4 applies here. > Because that just required: > ``` > static_assert( > std::is_constructible_v< > std::ranges::range_value_t<decltype(r)>, > std::tuple<int, int> > >); > static_assert( > std::is_constructible_v< > std::tuple<int, int>, > std::ranges::range_value_t<decltype(r)> > >); > ``` > > And didn't change std::ranges::views::adjacent how acts. https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2165r4.pdf: [Editor’s note: Remove [range.zip.view]p1] Given some pack of types Ts, the alias template tuple-or-pair is defined as follows: • If sizeof...(Ts) is 2, tuple-or-pair<Ts...> denotes pair<Ts...>. • Otherwise, tuple-or-pair<Ts...> denotes tuple<Ts...>. [Editor’s note: Replace all usages of tuple-or-pair by tuple in the range clause. This includes [range.zip], [range.adjacent.iterator] as well as [range.cartesian] if P2374 is adopted]