Generalizing std::minmax_element
This code is pretty good, and there's very little to improve.  The two-line fold expression did benefit from the explanatory comment in the description, so perhaps it could get a summary in the code?

I found a couple of very minor simplifications:


We can declare count as

    static const auto count = sizeof...(PredsT);

Instead of duplicating ++begin in a for loop, we can transform to a simpler while loop:

    while (++begin != end) {

Instead of indexing selected, we might choose to iterate (and avoid a no-op assignment, and avoid the need to remember precedence of comma operator):

    auto p = selected.begin();
    ((preds(**p, *begin) ? *p++ : *p++ = begin), ...);