我想知道转发:
该标准基本上通过两个重载实现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 */ }
第二种情况很有意义,但是触发它的例子是什么?
最佳答案
我相信这是重复的:
What is the purpose of std::forward()'s rvalue reference overload?
另请阅读随附的论文:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2951.html
关于c++ - 将右值作为右值转发用例吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57399435/