lambda this

김대익·2022년 3월 13일

[ ] capture list 부분에 this가 들어오는 [this]경우이다.

this키워드는 클래스와 관련이 있다.


위와 같이 Cat클래스에 lambda를 사용했을 때 lambda는 Cat클래스의 로컬변수인 mAge에 접근이 불가능하다.
하지만
automatic reference capture를 사용하게되면 mAge에 접근이 가능해진다.

또한 로컬 함수인 speak()도 호출이 가능해진다.

그 이유는 [&]선언한 람다함수안에서 멤버함수, 변수를 부르면
컴파일러가 알아서

객체의 포인터인 this를 capture해주기 때문이다.

이렇게 자동으로 해주지만

실수를 줄이기위해 explicit하게 적어주는 것이 좋다.


STL과 람다가 같이쓰이는 경우


인수에 람다가 들어가면서 사용이 가능하다

0개의 댓글