The following snippet produces the wrong result, probably due to the decomposition:
#include "kassert/kassert.hpp"
#include <cassert>
struct A {
bool operator==(const A&) && {
return true;
}
bool operator==(const A&) const & {
return false;
}
};
int main() {
assert(A{} == A{});
KASSERT(A{} == A{});
}