The revision adds a support for CXXFoldExpr allowing handling cases like
template <class... Values> struct Bar2 { static_assert((... && (sizeof(Values) > 0)) || (... && (sizeof(Values) > 0))); // warning: both sides of operator are equivalent [misc-redundant-expression] };
Also fixes the bug https://bugs.llvm.org/show_bug.cgi?id=44256
What happens when *LeftIter is null, but *RightIter isn't or vice versa, That case should also return false.