我有一些麻烦从lambda返回引用。 此代码的工作:C++ 11 lambda返回引用
std::function<int*(int*)> funct;
funct = [](int *i){
++*i;
return i;
};
int j = 0;
LOG<<*funct(&j)<<j;
输出:1
但不是这一个:
std::function<int&(int&)> funct;
funct = [](int &i){
++i;
return i;
};
int j = 0;
LOG<<funct(j)<<j;
大楼错误:C:\ Program Files文件(x86)的\微软的Visual Studio 14.0 \ VC \ include \ type_traits:1441:error:C2440:'return':无法从'int'转换为'int &'
任何想法为什么?对我而言,这是一回事。
请提供[MCVE]。你目前的一个不能编译。 – tambre
你为什么要把它作为参考返回?应该解决什么问题?为什么不简单地按值返回(这是lambda已经做的)? –
@Someprogrammerdude因为它通过参数获取它作为参考。例如链式'std :: ostream :: operator <<'调用。 – Slava