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,

Reply via email to