// 函数原型
template <class T> T&& forward (typename remove_reference<T>::type& t) noexcept;
template <class T> T&& forward (typename remove_reference<T>::type&& t) noexcept;// 精简之后的样子
std::forward<T>(t);

推导规则:

#include <iostream>
using namespace std;template<typename T>
void printValue(T& t)
{cout << "l-value: " << t << endl;
}template<typename T>
void printValue(T&& t)
{cout << "r-value: " << t << endl;
}template<typename T>
void testForward(T && v)
{printValue(v);printValue(move(v));printValue(forward<T>(v));cout << endl;
}int main()
{testForward(520);int num = 1314;testForward(num);testForward(forward<int>(num));testForward(forward<int&>(num));testForward(forward<int&&>(num));return 0;
}/*作者: 苏丙榅
链接: https://subingwen.cn/cpp/move-forward/#2-forward
来源: 爱编程的大丙*/

测试结果:

该文参考于下面链接
链接: https://subingwen.cn/cpp/move-forward/#2-forward

[C++11]forward完美转发相关推荐

  1. forward完美转发

    forward完美转发 std::forward是一个标准模板函数,它用于实现完美转发,即将输入的参数原封不动地传递给另一个函数,保持其左值或右值的属性. std::forward的作用是根据模板参数 ...

  2. C++11新特性之 std::forward(完美转发)

    上篇博客对右值.右值引用都做了简要介绍. 我们也要时刻清醒,有时候右值会转为左值,左值会转为右值. (也许"转换"二字用的不是很准确) 如果我们要避免这种转换呢? 我们需要一种方法 ...

  3. C++ std::move/std::forward/完美转发

    右值引用相关的几个函数:std::move, std::forward 和 成员的 emplace_back; 通过这些函数我们可以避免不必要的拷贝,提高程序性能. move 是将 对象的状态 或者 ...

  4. std:forward 完美转发

    概述:     // TEMPLATE CLASS identity template<class _Ty>     struct identity     {    // map _Ty ...

  5. forward在委托机制中的应用——完美转发

    forward在委托机制中的应用--完美转发 标签: forward完美转发委托机制 2017-02-07 21:19 63人阅读 评论(0) 收藏 举报  分类: C++(25)  版权声明:本文为 ...

  6. 可变参数模板、右值引用带来的移动语义完美转发、lambda表达式的理解

    可变参数模板 可变参数模板对参数进行了高度泛化,可以表示任意数目.任意类型的参数: 语法为:在class或者typename后面带上省略号. Template<class ... T> v ...

  7. C++左值与右值,移动与完美转发

    左值与右值 判别: 左值:用来存储数据的变量,有实际的内存地址,表达式结束后任然存在. 右值:匿名的临时变量,表达式结束时被销毁,不能存放数据,可以被修改或者不修改:字面常量也是右值. int x = ...

  8. C++11:forward及完美转发

    简介 一个右值引用参数作为函数的形参,在函数内部再转发该参数的时候它已经变成一个左值了,并不是原来的类型. 比如: template <typename T> void forwardVa ...

  9. 移动语义(move semantic)和完美转发(perfect forward)

    完整原文链接:https://codinfox.github.io/dev/2014/06/03/move-semantic-perfect-forward/ 移动语义(move semantic) ...

最新文章

  1. Swift - AppDelegate.swift类中默认方法的介绍
  2. 【 C 】动态内存分配案例分析
  3. Android 解决不同进程发送KeyEvent 的问题
  4. 编程之美2.14 求数组的子数组之和的最大值
  5. [转载] 全本张广泰——第三回 广泰逛青楼 初会韩红玉
  6. 无ldf文件情况下恢复数据库数据纪实
  7. 【Linux】一步一步学Linux——wall命令(237)
  8. C++之类型萃取技巧
  9. 獲取mysql字段的注释或描述
  10. token要加编码decode吗_彻底弄明白Base64 编码
  11. LeetCode:验证回文串【125】
  12. 友盟+《小程序用户增长白皮书》:从五个角度入手分析小程序数据
  13. apache commons - lang 常用方法记录
  14. RS232接口芯片内部原理
  15. 做好产品经理,需要具备哪些技能?
  16. AI 视频分析识别系统技术分析
  17. uchome迁移问题
  18. win7计算机不能设置双屏怎么回事,win7怎么设置双屏显示?Win7双屏显示设置的方法...
  19. OpenWrt开发必备软件模块——系统总线ubus
  20. 四舍六入五成双方法-js版

热门文章

  1. Leetcode之仅仅反转字母
  2. (7)3分钟搞定 C# 逻辑运算
  3. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(一)既然你选择了这系列教程那么我就要让你听得懂
  4. java 字节序列_java – 这个线程安全的字节序列生成器有什么问题?
  5. 合流超几何函数_【初中数学大招流】从平面几何到解析几何
  6. 100多千克的柠檬电池车可以开吗?
  7. 大数据告诉你,中国女人有多勤奋
  8. 和哪个专业的男生谈恋爱最惨?
  9. 如何判断程序员是在装逼还是有真本事?
  10. 《SAS编程与数据挖掘商业案例》学习笔记之九