Programing

C ++에서 [=]은 무엇을 의미합니까?

lottogame 2020. 9. 3. 23:34
반응형

C ++에서 [=]은 무엇을 의미합니까?


나는 무엇을 알고 싶어 [=]? 다음은 간단한 예입니다.

template <typename T>
std::function<T (T)> makeConverter(T factor, T offset) {
    return [=] (T input) -> T { return (offset + input) * factor; };
}

auto milesToKm = makeConverter(1.60936, 0.0);

[]대신 코드가 어떻게 작동 [=]합니까?

나는 가정한다

std::function<T (T)>

(T)인수 및 반환 유형으로 가져 오는 함수 프로토 타입을 의미 T합니까?


[=]당신이 언급하고는의 일부 를 캡처 목록 람다 표현. 이것은 람다 식 내부의 코드가 초기화되어 람다가 생성 될 때 사용하는 모든 지역 변수의 복사본을 얻도록 C ++에 알려줍니다. 람다 식을 참조 할 수 있도록이 필요 factor하고 offset함수 내 로컬 변수는 어떤.

당신이를 교체 할 경우 [=][]람다 표현식 내부의 코드는 변수가 무엇인지 알 수 없기 때문에, 당신은 컴파일러 오류가 발생합니다 offsetfactor참조하십시오. 이렇게하면 많은 컴파일러가 좋은 진단 오류 메시지를 제공하므로 시도해보고 어떤 일이 발생하는지 확인하십시오!


그것은이다 람다 캡처 목록입니다. 람다에 변수를 사용할 수 있도록합니다. [=]값으로 또는 [&]참조로 전달 되는 사본을 사용할 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/34778041/what-does-mean-in-c

반응형