Callable Design

사용자 정의 동작은 재사용 범위로 표현을 고릅니다

알고리즘의 세 번째 인자에 들어갈 동작은 일반 함수, 함수 객체, 람다 중 하나로 만들 수 있습니다. 차이는 상태, 이름, 재사용성입니다.

function

상태가 필요 없는 공통 규칙

bool isEven(int)처럼 입력만으로 결과가 결정되고 여러 곳에서 같은 이름으로 쓰일 때 적합합니다.

간단하지만 캡처는 불가
functor

상태와 타입 이름이 필요한 규칙

operator()와 멤버 변수를 함께 두어 임계값, 정책, 누적 상태를 명시적으로 보관합니다.

긴 로직과 재사용에 강함
lambda

호출 지점 가까운 짧은 규칙

[limit](int n)처럼 주변 값을 캡처해 알고리즘 옆에서 의도를 바로 드러냅니다.

짧을수록 읽기 좋음
한 줄 조건

람다로 알고리즘 옆에 둡니다.

반복 사용

이름 있는 함수나 함수 객체로 분리합니다.

캡처가 많음

람다보다 상태를 가진 함수 객체가 더 명확할 수 있습니다.