2011-08-02 2 views
6

람다를 정의하는 함수가 있다면 함수가 호출 될 때마다 lamda가 '생성'됩니까? 나는 그것을 방지하기 위해 그것을 고정해야합니까?람다를 고정시켜야합니까?

void func(int x) 
{ 
    static auto lambda = [&x](int y) -> bool { 
     // ... 
    }; 
} 

답변

6

아니요, 참조로 로컬 변수를 캡처하므로 정적으로 설정하지 마십시오.

나는 람다를 구성하는 비용이 무엇인지 전혀 알지 못합니다. 성능 문제라고 생각되면 벤치 마크하십시오.

+0

아, 맞아. 변수를 참조로 캡처하지 않았다면 어떻게 될까요? –

+3

람다가 이러한 걱정을 할만 큼 큰 경우 전역 함수로 만들고 캡처 된 값을 추가 인수로 전달할 수 있습니다. –

+0

@Kerrek SB : 크지는 않다. 나는 단지 궁금했다. –

관련 문제