https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91212

--- Comment #3 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Happens with a class too:

struct T { int i; };

struct X {
  X(T&) { }  // #1
  X(const T&) { __builtin_abort (); } // #2
};

X
fn ()
{
  T buf;
  return buf;
}

int
main()
{
  X c = fn ();
}

is it actually a bug though, not just a consequence of Core 1579?  We treat
'buf' as an rvalue and you can't bind an rvalue to a non-const lvalue ref, so
#2 is chosen.

Reply via email to