The following compiled fine with libc++ version 19: ```cpp #include <set> struct Cmp { __int128 x; bool operator()(__int128, __int128) const; }; struct MySet { unsigned char b; std::set<__int128, const Cmp &> s; }; extern char q[sizeof(MySet)]; extern char q[40]; ``` It no longer compiles with libc++ trunk (https://godbolt.org/z/cTbEovcer). It seems the size of `MySet` has changed because of a change in `std::set`. The draft release notes (https://libcxx.llvm.org/ReleaseNotes.html#abi-affecting-changes) mention issues with overaligned empty types, but nothing about reference types.