Clang will optimize
bool swap_if(bool c, int& a, int& b) { int ta = a, tb = b; a = (-c & tb)|((c-1) & ta); b = (-c & ta)|((c-1) & tb); return c; }
l += swap_if( *r <= pv, *l, *r);
Clang will optimize
into cmov instructions. Used in a quicksort partition loop as It makes quicksort fully 2x as fast as the usual branch.