文档章节

关于右值引用

zray4u
 zray4u
发布于 2016/07/06 15:44
字数 401
阅读 18
收藏 0

The Forwarding Problem: Arguments
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm

#include<iostream>
#include<string>
using namespace std;

void incr(long &l)
{
    ++l;
    cout << l << endl; //输出2
}

template<class A1> void fwd(A1 && a1)
{
    incr(a1);

}

void f()
{
    int i(5);   

    //error C2664: “void incr(long &)”: 无法将参数 1 从“int”转换为“long &”
    // correctly fails to compile.这里的意思按照规定应该要报错.note:一个参数是引用传值方式,
    //不管是左值引用还是右值引用,编译器都不会进行隐式类型转换,所以一个int&类型传入一个以long&为参数的函数,必定报错.如果在i前加上强制类型转换,则可以正常运行.
    //fwd(i);

    fwd((long)i);   //输出6

    cout << i << endl;  //输出5,因为上面函数中修改是临时变量而不是i本身.

    //下面的英文注释是原文中出现的,但是自己在vs中试了下,并未报错,并输出2
    fwd(1L);    // compiles, but shouldn't.
    /*下面分析一下,fwd的调用过程:传入的参数是一个long类型的右值,对于以右值引用作为参数的fwd函数而言,通过这个1L得到一个非const的引用类型a1,在fwd体中的incr的参数
    就使用的是这个a1,所以以引用类型作参数的incr函数可以正常运行.*/

}

int main()
{
    f();
    system("pause");
    return 0;
}

本文转载自:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm

zray4u
粉丝 0
博文 216
码字总数 188982
作品 0
西城
私信 提问
[译]详解C++右值引用

C++0x标准出来很长时间了,引入了很多牛逼的特性[1]。其中一个便是右值引用,Thomas Becker的文章[2]很全面的介绍了这个特性,读后有如醍醐灌顶,翻译在此以便深入理解。 目录 概述 move语义...

wangdy
2016/08/17
31
0
C++ 0x 之左值与右值、右值引用、移动语义、传导模板

左值与右值 左值与右值的概念要追溯到 C 语言,由 C++ 语言继承了上来。C++ 03 3.10/1 如是说:“Every expression is either an lvalue or an rvalue.”左值与右值是指表达式的属性,而非对...

雅各宾
2013/11/27
0
2
如何理解c++的左值引用与右值引用

前几天看了一篇文章《4行代码看看右值引用》 觉得写得不错,但是觉得右值引用的内容还有很多可以去挖掘学习,所以总结了一下,希望能对右值引用有一个更加深层次的认识 一、几个基本概念 1....

刺客五六柒
03/09
0
0
C++11新特性:左值,右值,左值引用和右值引用

C++11新引入了右值引用的概念。 本质上来说,左值就是在内存中可以寻址的对象(表现形式是可以通过&操作符取指),而右值是在寄存器中或者内存中的匿名对象。 左值可以存在赋值运算符左右两边...

yepanl
2018/08/16
0
0
C++11 标准新特性: 右值引用与转移语义

C++11 标准新特性: 右值引用与转移语义 C++ 的新标准 C++11 已经发布一段时间了。本文介绍了新标准中的一个特性,右值引用和转移语义。这个特性能够使代码更加简洁高效。 新特性的目的 右值引...

雅各宾
2014/01/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

八、RabbitMQ的集群原理

集群架构 写在前面 RabbitMQ集群是按照低延迟环境设计的,千万不要跨越WAN或者互联网来搭建RabbitMQ集群。如果一定要在高延迟环境下使用RabbitMQ集群,可以参考使用Shovel和Federation工具。...

XuePeng77
今天
1
0
mac系统下,brew 安装mysql,用终端可以连接,navicat却连接不上?

问题: 1.报错? 2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found 2.自己通过设置,已经把密......

写bug的攻城狮
昨天
2
0
老生常谈,HashMap的死循环

问题 最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。 由于HashMap...

群星纪元
昨天
5
0
拉普拉斯算子

拉普拉斯算子是二阶微分算子。 我们知道,一维离散信号一阶微分公式如下: 相应的,一维离散信号二阶微分公式如下: 由于图像有x和y两个方向,因此图像信号属于二维离散信号。其在x,y两个...

yepanl
昨天
3
0
记录"正则表达式"

详细请查看我的博客:https://blog.enjoytoshare.club/article/RegularExpression.html 1 写在前面 正则表达式(Regular Expression)在代码中常常简写为regex。正则表达式通常被用来检索、替...

wugenqiang
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部