将右值作为右值转发是用例吗?
Is forwarding an rvalue as an rvalue a use case?
本文关键字:转发 更新时间:2023-10-16
我想知道转发: 该标准基本上通过两个重载实现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 */ }
第二种情况是有道理的,但触发它的例子是什么?
我相信这是:
std::forward(( 的右值引用重载的目的是什么?
另请阅读随附的论文:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2951.html
相关文章:
- 正在折叠转发引用
- 将函数参数完美转发到函数指针:按值传递呢?
- 转发变量参数列表以模拟 std::thread
- 在按值调用 (c++) 中转发构造函数参数
- 存储稍后要转发的变量参数
- 如何在 C++ 中转发声明 std::set?
- C++使用默认模板参数键入别名和转发声明
- CNTK:->转发或 ->评估某些电脑上的崩溃,而不是其他电脑上的崩溃
- C++20理念:要求表达和完美转发
- 如何在模板中转发右值和左值引用
- 如何转发声明枚举?
- 使用函数指针转发声明作为 lamba 声明
- CAFFE转发网络在for循环中不起作用
- 如何将迭代器调用转发给类的私有成员?
- 转发复制的 std::tuple
- 完美的转发和构造函数
- 是否可以在不扣除的情况下将模板参数转发到 make_*?
- 通过基类接受方法转发派生 UniquePtr 的右值会移动引用而不是复制
- 如何将枚举类转发声明为模板化类的内部类?
- 我可以列表初始化 std::vector 并完美转发元素吗?