https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100894
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |10.4 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- For the next time I can't figure out how this works ... COMMON-REF(A&, B&&) is COMMON-REF(B&&, A&) which is COMMON-REF(const B&, A&) which is COND-RES(const B&, const A&) if that is a reference type, ill-formed otherwise. Since the COND-RES type is just B, it's ill-formed. That means that common_reference_t<A&, B&&> uses the third bullet, so it's COND-RES(A&, B&&) which is B.