我想知道转发:标准实现std::forward的基本方式是两个重载:
T)template<typename T>
T&& forward(lvalue_Reference v){
return static_cast<T&&>(v);
}; 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 */ }第二种情况是有道理的,但触发它的例子是什么呢?
发布于 2019-08-07 21:31:22
我相信这是一个复制:
What is the purpose of std::forward()'s rvalue reference overload?
请阅读所附文件:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2951.html
https://stackoverflow.com/questions/57399435
复制相似问题