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.