我有一些麻煩從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