C++ 右值引用的问题,求大神解惑

marslycan 2019-03-27 02:10:24
写了一个Demo:

#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类型呢?
...全文
309 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
marslycan 2019-04-08
  • 打赏
  • 举报
回复
引用 10 楼 SadmanSOS的回复:
[quote=引用 9 楼 marslycan 的回复:]
[quote=引用 8 楼 SadmanSOS的回复:]
请问楼主当时这个问题你是怎么解决的

当时是刚入门的小白,计算的时候数据溢出了,超过255导致的好像[/quote]

我最小值滤波为7的时候,色斑特别多,然后把滤波半径改成30,情况就好很多。
如果是数据溢出导致的,是不是在计算的时候判断一下,如果超过了255就直接把那个通道的值设成255就好了呢?[/quote] 😂我当时是这么处理的
marslycan 2019-04-07
  • 打赏
  • 举报
回复
引用 8 楼 SadmanSOS的回复:

请问楼主当时这个问题你是怎么解决的
当时是刚入门的小白,计算的时候数据溢出了,超过255导致的好像
SadmanSOS 2019-04-07
  • 打赏
  • 举报
回复
引用 9 楼 marslycan 的回复:
[quote=引用 8 楼 SadmanSOS的回复:]
请问楼主当时这个问题你是怎么解决的

当时是刚入门的小白,计算的时候数据溢出了,超过255导致的好像[/quote]

我最小值滤波为7的时候,色斑特别多,然后把滤波半径改成30,情况就好很多。
如果是数据溢出导致的,是不是在计算的时候判断一下,如果超过了255就直接把那个通道的值设成255就好了呢?
SadmanSOS 2019-04-07
  • 打赏
  • 举报
回复

请问楼主当时这个问题你是怎么解决的
marslycan 2019-03-27
  • 打赏
  • 举报
回复
引用 5 楼 真相重于对错 的回复:

vs2017
我用17也编过了~~就是现在需要用13编译库,然后有个上述代码的错误~~寻思怎么把类型转化下就OK~
真相重于对错 2019-03-27
  • 打赏
  • 举报
回复
vs2017
marslycan 2019-03-27
  • 打赏
  • 举报
回复
引用 3 楼 真相重于对错 的回复:
换一个编译器,你的编译器不完全支持c++ 11
这个错误 是部分C++11功能未支持呢~~右值引用是没问题的~~难道是模版参数推导的问题么~
真相重于对错 2019-03-27
  • 打赏
  • 举报
回复
换一个编译器,你的编译器不完全支持c++ 11
marslycan 2019-03-27
  • 打赏
  • 举报
回复
引用 1 楼 niiiloc 的回复:
std::function<void(int&&)> fun = funR_VlaueReference;
试试?
这样调用肯定是没问题的;但是我用bind好像不行,,,

auto xx = std::bind(funR_VlaueReference, std::placeholders::_1);
xx(3);
这时候就会报错 int to int&&
636f6c696e 2019-03-27
  • 打赏
  • 举报
回复
std::function<void(int&&)> fun = funR_VlaueReference; 试试?

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧