https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60943
--- Comment #4 from Anders Sjögren <anders at sjogren dot info> --- Thanks for fixing the bug! It seems that the test file https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/testsuite/g%2B%2B.dg/cpp1y/pr60943.C?view=markup&pathrev=223502 contains an error. It contains: void Bar (A &&a) { a.f (); } My guess is that it was meant to call the member function from an R-value object a. However, as an l-value at the site of the call, and both Foo and Bar will select the l-value version. Something like std::move(a).f() or just A{}.f(); should do the trick.