람다에서 참조를 반환하는 데 약간의 문제가 있습니다. 이 코드는 작동합니다C++ 11 람다 반환 참조
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 파일 (x 86) \ 마이크로 소프트 비주얼 스튜디오 14.0 \ VC \ include \ type_traits : 1441 : 오류 : C2440 : '반환': 'int'에서 'int &'로 변환 할 수 없음
왜 그런가? 나에게 그것은 똑같은 것이다.
[MCVE]를 제공해주십시오. 현재 컴파일되지 않습니다. – tambre
왜 그것을 참조로 돌려 주시겠습니까? 해결해야 할 문제는 무엇입니까? 왜 단순히 값으로 반환하지 않는가? (이것은 람다가 이미 수행 한 것인가?) –
@Someprogrammerdude 매개 변수로 참조로 가져 오기 때문에. 예를 들어'std :: ostream :: operator <<'연쇄 호출. – Slava