I am wondering about forwarding:
The standard implements std::forward basically with two overloads:
- To forward lvalues as lvalues/rvalues (dep. of 
T) 
template<typename T>
T&& forward(lvalue_Reference v){ 
    return static_cast<T&&>(v); 
};  
- To forward rvalues as rvalues
 
template<typename T>
T&& forward(rvalue_Reference v){  
    // static-assert: T is not an lvalue-Reference
    return static_cast<T&&>(v); 
};  
First case comes to play when
template<typename T>
void foo(T&& a) { doSomething(std::forward<T>(a)); /* a is lvalue -> matches 1. overload */ }
The second case makes sense, but what is an example of triggering it?