// Contributed by Douglas Gregor template struct wrap {}; template bool& operator==(wrap, wrap); template void g(T, wrap > x) { bool& b = x == x; // { dg-bogus "invalid initialization of reference" "" { xfail *-*-*} } } template int& operator==(wrap >, wrap >); void h() { wrap > x; g(17, x); }