http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57064
--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> 2013-04-25 06:19:35 UTC --- (In reply to comment #0) > Now suppose the following function: > > void g(A &&a) > { > a.p(); > } > > Which overload should GCC call? This is my request for clarification. I > couldn't find anything specific in the standard that would help explain one > way > or the other. > > Intuitively, it would be the rvalue overload, but gcc calls the lvalue > overload > instead. As you note in a further comment, a named rvalue reference acts as an lvalue. > Making it: > > std::move(a).p(); > > Does not help. It does for me...