将右值作为右值转发是用例吗?

Is forwarding an rvalue as an rvalue a use case?

我想知道转发: 标准实现 std::forward 基本上有两个重载:

  1. lvalues 转发为 lvalues/rvalues(取决于 T
template<typename T>
T&& forward(lvalue_Reference v){ 
    return static_cast<T&&>(v); 
};  
  1. rvalues 转发为 rvalues
template<typename T>
T&& forward(rvalue_Reference v){  
    // static-assert: T is not an lvalue-Reference
    return static_cast<T&&>(v); 
};  

第一个案件在

时上演
template<typename T>
void foo(T&& a) { doSomething(std::forward<T>(a)); /* a is lvalue -> matches 1. overload */ }

第二种情况有道理,但触发它的例子是什么?

我相信这是重复的:

另请阅读随附的论文:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2951.html