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...