Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++14 일반화된 람다 표현식(Generic Lambda) 완벽 이해하기

C++11에서 람다(lambda)가 처음 도입되었습니다. 람다는 다른 함수 호출문 안에 중첩하여 작성할 수 있는 코드 조각으로, auto 키워드와 함께 사용하면 변수에 저장해 두었다가 나중에 재사용할 수 있습니다.

C++14에서는 이러한 람다 표현식이 한층 발전하여 일반화된 람다(generalized lambda)를 지원하게 되었습니다. 예를 들어, 하나의 람다로 정수 덧셈, 실수 덧셈, 심지어 문자열 연결까지 모두 처리하고 싶다면 일반화된 람다를 활용해야 합니다.

일반화된 람다의 문법

일반화된 람다 표현식의 기본 문법은 다음과 같습니다.

[](auto x, auto y) { return x + y; }

핵심은 매개변수의 타입을 auto로 선언하는 것입니다. 이렇게 하면 컴파일러가 호출 시점에 전달되는 인자의 타입을 자동으로 추론하며, 마치 함수 템플릿처럼 동작합니다.

예제 코드

아래 예제를 통해 일반화된 람다가 다양한 타입을 어떻게 처리하는지 확인해 보겠습니다.

#include <iostream>
#include <string>
using namespace std;

main() {
    auto add = [](auto arg1, auto arg2) { // 일반화된 람다 정의
        return arg1 + arg2;
    };
    cout << "정수의 합: " << add(5, 8) << endl;
    cout << "실수의 합: " << add(2.75, 5.639) << endl;
    cout << "문자열 연결: " << add(string("Hello "), string("World")) << endl;
}

실행 결과

정수의 합: 13
실수의 합: 8.389
문자열 연결: Hello World

위 실행 결과에서 볼 수 있듯이, 동일한 add 람다 하나만으로 정수, 실수, 문자열 등 서로 다른 타입의 연산을 모두 수행할 수 있습니다. 이것이 바로 C++14 일반화된 람다의 강력한 장점입니다. 타입별로 여러 함수를 따로 작성할 필요 없이, 코드의 재사용성과 가독성을 크게 높일 수 있습니다.