[C++11]forward完美转发
// 函数原型
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完美转发相关推荐
- forward完美转发
forward完美转发 std::forward是一个标准模板函数,它用于实现完美转发,即将输入的参数原封不动地传递给另一个函数,保持其左值或右值的属性. std::forward的作用是根据模板参数 ...
- C++11新特性之 std::forward(完美转发)
上篇博客对右值.右值引用都做了简要介绍. 我们也要时刻清醒,有时候右值会转为左值,左值会转为右值. (也许"转换"二字用的不是很准确) 如果我们要避免这种转换呢? 我们需要一种方法 ...
- C++ std::move/std::forward/完美转发
右值引用相关的几个函数:std::move, std::forward 和 成员的 emplace_back; 通过这些函数我们可以避免不必要的拷贝,提高程序性能. move 是将 对象的状态 或者 ...
- std:forward 完美转发
概述: // TEMPLATE CLASS identity template<class _Ty> struct identity { // map _Ty ...
- forward在委托机制中的应用——完美转发
forward在委托机制中的应用--完美转发 标签: forward完美转发委托机制 2017-02-07 21:19 63人阅读 评论(0) 收藏 举报 分类: C++(25) 版权声明:本文为 ...
- 可变参数模板、右值引用带来的移动语义完美转发、lambda表达式的理解
可变参数模板 可变参数模板对参数进行了高度泛化,可以表示任意数目.任意类型的参数: 语法为:在class或者typename后面带上省略号. Template<class ... T> v ...
- C++左值与右值,移动与完美转发
左值与右值 判别: 左值:用来存储数据的变量,有实际的内存地址,表达式结束后任然存在. 右值:匿名的临时变量,表达式结束时被销毁,不能存放数据,可以被修改或者不修改:字面常量也是右值. int x = ...
- C++11:forward及完美转发
简介 一个右值引用参数作为函数的形参,在函数内部再转发该参数的时候它已经变成一个左值了,并不是原来的类型. 比如: template <typename T> void forwardVa ...
- 移动语义(move semantic)和完美转发(perfect forward)
完整原文链接:https://codinfox.github.io/dev/2014/06/03/move-semantic-perfect-forward/ 移动语义(move semantic) ...
最新文章
- Swift - AppDelegate.swift类中默认方法的介绍
- 【 C 】动态内存分配案例分析
- Android 解决不同进程发送KeyEvent 的问题
- 编程之美2.14 求数组的子数组之和的最大值
- [转载] 全本张广泰——第三回 广泰逛青楼 初会韩红玉
- 无ldf文件情况下恢复数据库数据纪实
- 【Linux】一步一步学Linux——wall命令(237)
- C++之类型萃取技巧
- 獲取mysql字段的注释或描述
- token要加编码decode吗_彻底弄明白Base64 编码
- LeetCode:验证回文串【125】
- 友盟+《小程序用户增长白皮书》:从五个角度入手分析小程序数据
- apache commons - lang 常用方法记录
- RS232接口芯片内部原理
- 做好产品经理,需要具备哪些技能?
- AI 视频分析识别系统技术分析
- uchome迁移问题
- win7计算机不能设置双屏怎么回事,win7怎么设置双屏显示?Win7双屏显示设置的方法...
- OpenWrt开发必备软件模块——系统总线ubus
- 四舍六入五成双方法-js版