Move-constructing an object, from an r-value reference, never leaves you with a "dangling" reference. Instead, even though the move-constructor is allowed to "steal" the resources from the "moved from" object (instead of having to copy them), still the "moved from" object will be left in an undefined but valid state!
By using the &&ref-qualifier on a member function, you are telling the compiler that this function is supposed to be called on an r-value reference. An r-value reference allows the move-constructor to be called, instead of the copy-constructor. But, as said before, the move-constructor does not produce "dangling" references.
(after move-construction, the "moved from" object is left in a undefined but valid state)
The method && mean that the member function can only be invoked on r-values (the && applies to this - similar to how const applies to this). This allows multiple member-function overloads based upon these ref-qualifies (const, &, &&) with different code/return for each.
However, you probably shouldn't use std::move() on L12. This can break return value optimisation (copy elision etc).