https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104803

--- Comment #4 from Barry Revzin <barry.revzin at gmail dot com> ---
For instance, clang accepts this version:

consteval int p(int i) {
    return i > 2;
}

constexpr auto none_of(int const* f, int const* l) -> bool {
    for (; f != l; ++f) {
        int i = *f;
        if consteval {
            if (p(i)) {
                return false;
            }
        } else {
            return false;
        }
    }
    return true;
}

constexpr int vals[] = {1, 0, -1};
static_assert(none_of(vals, vals+3));

But not if you change none_of to be a template (in any way, e.g. taking f and l
as auto).

Reply via email to