I used already_AddRefed<>&& (and even UniquePtr<>&&) for parameters for
unconditional transfer for quite a while. But I'm recently convinced that
we should use already_AddRefed<> and UniquePtr<> in almost all cases,
because compilers actually have more chance to optimize code with them
rather than &&.
I believe conditional move is rare, and could be confusing in most cases,
and you may actually want to use T& rather than T&& for conditional move.
The only use of && is for move-constructor and functions we want people to
reconsider when they try to pass in lvalue.
- Xidorn