https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120934
--- Comment #3 from François Hamonic <francois.hamonic at gmail dot com> --- (In reply to Patrick Palka from comment #1) > Confirmed, it seems this gets fixed if we implement the updated proposed > resolution for LWG 4166 (https://wg21.link/lwg4166). We currently implement > the original proposed resolution (in r15-4555), which isn't sufficient here > (as Hewill Kang pointed out earlier in PR115209#c7). Thanks a lot for your work and your fast reply! I'm glad to hear that this issue seems to already be addressed by the updated resolution for LWG 4166 and that a fix is expected in GCC 15.2. In the meantime, I'm using the following workaround for my specific use case: template <std::ranges::range R1, std::ranges::range R2> constexpr auto unordered_concat(R1&& r1, R2&& r2) { if constexpr (std::ranges::range<decltype(std::views::concat( std::forward<R1>(r1), std::forward<R2>(r2)))>) { return std::views::concat(std::forward<R1>(r1), std::forward<R2>(r2)); } else { return std::views::concat(std::forward<R2>(r2), std::forward<R1>(r1)); } } Best regards,