关于标准库中std::make_pair的一个问题
2013-03-03 15:57
344 查看
namespace UnitTest1 { TEST_CLASS(UnitTest1) { public: TEST_METHOD(TestMethod1) { // TODO: 在此输入测试代码 int i = 0, j = 0; std::make_pair<int, int>(i, j); } }; }
请看以上这段伪代码
先说问题
这段代码在vs2005中能够正常编译通过,而在vs2012中就编译不过了(ps:对于其他编译器没有做过测试),在vs2012中会抛出如下:
error C2664: “std::make_pair”: 不能将参数 1 从“int”转换为“int &&”
无法将左值绑定到右值引用
解决方案:
std::make_pair(i, j);直接这样写就对了
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
不知道从哪里学来的
std::make_pair<int, int>(i, j);这种写法,因为一直在用vs2005,能够很正常的编译通过,所以也就没有注意过这个问题,就一直这么用着了
换成vs2012后,这样的代码就会报错了。
网上搜了下,找到一篇帖子,原帖子地址如下:
http://bbs.csdn.net/topics/390213723
其实这个问题本身就是因为没有搞清楚左值与右值的概念才发生的
这里有一篇已经讲得比较详细了:
http://blog.csdn.net/csdnji/article/details/169200
vs2012用的是C++11,这里还有一篇关于C++11的右值引用的概念:
http://developer.51cto.com/art/201202/316758.htm
相关文章推荐
- 关于VS2012使用make_pair编译提示“error C2664: “std::make_pair”: 不能将参数 1 从“int”转换为“int &&””
- 关于字符串指针初始化std::string的一个小问题
- 关于vmalloc缺页异常的一个问题
- 关于数据取舍问题的一个实例
- no matching function for call to 'make_pair(std::string&, size_t&)'
- 关于request的一个问题
- 一个关于cx_Freeze打包的问题
- 一个关于#include的问题
- 一个关于css中margin-right没有效果的问题
- 第三周作业,关于老师的一个问题给出了一点自己的想法
- 一个关于int值越界的问题
- 关于微信分享的一个小问题
- 在学习autotools遇到一个问题:make没有按照VPATH给的目录进行搜索,请大家指导一下。
- 关于find命令的一个奇葩问题, 其实不奇葩------不过是软链在捣鬼而已
- 一个关于局域网中【并行计算】的问题
- 关于51单片机中断标志的一个小问题
- 请教各位大神一个关于安卓开发里面的web服务器的问题 急~~~
- 关于VC异常捕获的一个问题:
- 关于asp.net1.0升级到asp.net2.0时发现的一个有趣的问题
- C语言关于函数、数组的一个事例【关于选手评分的问题】