본문 바로가기

c++ lambda2

C++14 : 람다 캡처 표현식(Lambda capture expressions) C++11 람다 함수는 값 복사 또는 참조로 외부 범위에서 선언된 변수를 캡처한다. 이는 람다의 값 멤버가 이동 전용 타입이 될 수 없음을 의미한다. C++14에서는 캡처된 멤버를 임의의 표현식으로 초기화할 수 있다. 이를 통해 외부 범위에 해당하는 명명된 변수를 갖지 않고도 값 이동에 의한 캡처와 람다의 임의 멤버 선언을 모두 수행할 수 있다. 이것은 이니셜라이저 표현식을 사용하여 수행됩니다. auto lambda = [value = 1] {return value;}; 람다 함수 lambda는 초기화한 값인 1을 반환한다. 선언된 캡처는 자동으로 이니셜라이저 표현식에서 타입을 추론한다. 이것은 표준 std::move 함수를 사용하여 이동으로 캡처하는 데 사용할 수 있다. std::unique_ptr p.. 2022. 4. 28.
C++14 : 제네릭 람다(Generic lambdas) C++11에서 람다 함수 매개변수는 구체적인 타입으로 선언해야 한다. C++14에서는 이 요구 사항을 완화하여 람다 함수 매개 변수를 auto 타입 지정자로 선언할 수 있다. auto lambda = [](auto x, auto y) {return x + y;}; auto 타입 추론과 관련하여 generic 람다는 템플릿 인수 추론 규칙을 따른다. (비슷하지만 모든 면에서 동일하지 않음) 위의 lambda의 변환 함수 동작은 아래 변환 함수 동작과 같다. struct { template auto operator()(T x, U y) const {return x + y;} } lambda{}; C++ 람다 표현식에 대해 자세히 알고 싶으면 아래 사이트를 참고하면 된다. https://www.geeksfor.. 2022. 4. 15.
300x250