C++ 右值引用的问题,求大神解惑
#include "stdafx.h"
#include <iostream>
#include <string>
#include <functional>
using namespace std;
void funR_VlaueReference(int && a)
{
std::cout << L"R_VlaueReference" << std::endl;
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
std::function<void(int&&)> fun = std::bind(funR_VlaueReference, std::placeholders::_1);
return 0;
}在Vs2013 编译出错 Error 1 error C2664: 'void (int &&)' : cannot convert argument 1 from 'int' to 'int &&' c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional 1149 1 TemplentRVlaue
然而放到15,或者17 都没啥问题,我要如何修改这个function类型呢?
相关推荐
浅谈C++左值引用和右值引用
下面小编就为大家带来一篇浅谈C++左值引用和右值引用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
C++11中的左值引用和右值引用
1.首先区分左值和右值 左值是表达式结束后依然存在的持久对象 右值是表达式结束时不再存在的临时对象 便捷方法:对表达式取地址,如果能,则为左值,否则为右值 举例: int a = 10 int b = 20 int *pFlag = &a vector vctTemp vctTemp.push_back(1) string str1 = "hello" string str2 = "world" const int &m = 1 请问:a,b,a+b,a++,++a,pFlag,vctTemp[0],100
关于c++的 右值 右值引用 move
简介 第一次接触c++move操作就懵逼了,一直想探个究竟,但是右值以及右值引用思考了好长时间,就是不得要领,今天终于有所收获,写下第一篇博客,一方面为了帮助一些刚入门的朋友,另一方面也是帮助自己今后复习。 右值 左值 右值引用 左值引用 含义 左值是一个持久的量,右值是一个短暂的量。那怎么算持久怎么算短暂呢?取决于我的代码里有没有一个变量来保存他。举个例子: int i = 5; string s1(“ppap”); 都可以完成取地址的操作的操作 &i,&si; 那么定义一个左值引用,就是给这些地址起一个其他的名字罢了,地址是不会发生变化的,也就是说左值引用的本质其实还是指针: int &
浅析C++11中的右值引用、转移语义和完美转发
对于c++11来说移动语义是一个重要的概念,一直以来我对这个概念都似懂非懂。最近翻翻资料感觉突然开窍,因此顺便记录下C++11中的右值引用、转移语义和完美转发,方便大家查阅参考。
深入解读C++中的右值引用
右值引用(及其支持的Move语意和完美转发)是C++0x将要加入的最重大语言特性之一,这点从该特性的提案在C++ – State of the Evolution列表上高居榜首也可以看得出来。 从实践角度讲,它能够完美解决C++中长久以来为人所诟病的临时对象效率问题。从语言本身讲,它健全了C++中的引用类型在左值右值方面的缺陷。从库设计者的角度讲,它给库设计者又带来了一把利器。从库使用者的角度讲,不动一兵一卒便可以获得“免费的”效率提升… 在标准C++语言中,临时量(术语为右值,因其出现在赋值表达式的右边)可以被传给函数,但只能被接受为const &类型。这样函数便无法区分传给const &的


