首页 > 编程语言 >C++之forward

C++之forward

时间:2023-04-30 11:55:23浏览次数:29  
标签:nValue int printX C++ TestRValue forward include

不管是T&&、左值引用、右值引用,std::forward都会按照原来的类型完美转发。

forward主要解决引用函数参数为右值时,传进来之后有了变量名就变成了左值。

 

#include <QCoreApplication>

#include <memory>

#include <iostream>

using namespace std;

 

template <typename T>

void printX(T& lValue)

{

    cout << "lValue" << lValue << endl;

}

 

template  <typename T>

void printX(T&& rValue)

{

    cout << "rValue" << rValue << endl;

}

 

template <typename T>

void TestRValue(T && nValue)

{

    printX(nValue);

    printX(forward<T>(nValue));

    printX(move(nValue));

}

 

int main(int argc, char *argv[])

{

    QCoreApplication a(argc, argv);

    int nValue = 100;

    TestRValue(4);

    TestRValue(nValue);

    TestRValue(forward<int>(nValue));

   return a.exec();

}

 lValue4

rValue4

rValue4

lValue100

lValue100

rValue100

lValue100

rValue100

rValue100

 

 

https://www.cnblogs.com/xzlq/p/15256974.html

标签:nValue,int,printX,C++,TestRValue,forward,include
From: https://www.cnblogs.com/im18620660608/p/17365089.html

相关文章

  • 关于完美转发中forward的作用的一点理解
     首先先描述一下C++中各种类型的值(以下无特殊说明“类型”皆按如下分法)lvalue(leftvalue)左值:有标识符,且不能被回收rvalue(rightvalue)右值:有无标识符皆可,可以被回收glvalue(generalizedleftvalue)泛左值:有标识符,可不可被回收皆可prvalue(purerightvalue)纯右值:没有标识符......
  • 79.C++ 中的字面值常量
      一个形如42的值被称作字面值常量(literal),这样的值一望而知。每个字面值常量都对应一种数据类型,字面值常量的形式和值决定了它的数据类型。1.整型和浮点型字面值  可以将整型字面值写作十进制数、八进制数或十六进制数的形式。以0开头的整数代表八进制数,以0x或0X开头的代......
  • 【c++基础】程序运行时间计时
    使用std::chrono计算程序运行时间#include<iostream>#include<string>#include<chrono>voidRun(){ for(inti=0;i<1000000000;++i) { }}intmain(){ autobeforeTime=std::chrono::steady_clock::now(); Run(); autoafterTime......
  • VS Code 配置 C/C++ 环境(编译/调试)
    1,VSCode安装点击此处跳转到官网下载安装VSCode2,环境准备这里我们安装VSCode官方推荐的方法安装即可。官方文档。2.1下载MSYS2点击进入MSYS2官网,找到Installation的Downloadtheinstaller:msys2-x86_64-20230318.exe,点击msys2-x86_64-20230318.exe下载。然后根......
  • linux c/c++程序集成python库,实现调用python函数
    为了提高开发效率,扩展开发程序的功能,我们经常会在我们的linuxc/c++进程里调用外部脚本,例如lua、python,下面,介绍下如何在自己的linuxc/c++代码里调用python脚本里的函数和类,并且将python库集成到我们自己的进程目录里,这样就不依赖系统环境是否存在python及其版本要求。 ......
  • C++ STL容器
    vector变长数组,倍增的思想string字符串,substr(),c_str()queue队列,push(),front(),pop()priority_queue优先队列,push(),top(),pop()stack栈,push(),top(),pop()deque双端队......
  • C++中的STL容器和算法
    C++STL(标准模板库)提供了一组丰富的容器和算法,使得开发者能够更加高效地编写程序。本文将介绍STL中的一些常用容器和算法。容器vectorvector是一个动态数组,可以在运行时调整大小。它的优点在于可以快速地访问元素,缺点是在插入和删除元素时需要移动后面的元素。#include<vec......
  • C++-#pargma once
    C++-#pargmaoncehttps://baike.baidu.com/item/%23pragmaonce/9468158?fr=aladdin#pragmaonce是一个比较常用的C/C++预处理指令。只在头文件的最开始加入这条预处理指令,就能够保证头文件只被编译一次。基本信息#pragmaonce是编译器相关的,有的编译器支持,有的编译器不支......
  • C++-std::this_thread::get_id()-获取线程id
    C++-std::this_thread::get_id()-获取线程idstd::this_thread::get_id()头文件:<thread>函数:std::this_thread::get_id()用例:std::thread::idthread_id=std::this_thread::get_id();std::thread对象的成员函数get_id()头文件:<thread>函数:std::thread::idget_id()用例:......
  • C++-改变终端(cout/printf)输出不同颜色的字体-Linux
    C++-改变终端(cout/printf)输出不同颜色的字体-Linuxhttps://blog.csdn.net/qq_41972382/article/details/90311102不同颜色的输出主要依据格式ESC[*m,ESC的八进制为\033,*可以是多个属性的组合,用,隔开。printf#include<iostream>usingnamespacestd;intmain(){print......