10
양의 정수를 비교하는 함수를 고려하십시오. 함수 자체는 람다를 사용하여 작업을 수행합니다.C++ 11 람다 식 - 인수 대 인수 전달
// Pass n1, n2 by value to the lambda.
bool Compare(int n1, int n2) {
return [](int n1, int n2) { return n1 > n2; };
}
위의 코드 조각은 정상적으로 컴파일됩니다. Compare()는 항상 true를 반환합니다.
그러나, 다음과 같은 코드도 컴파일에 실패 -
// capturing values
bool Compare(int n1, int n2) {
return [n1, n2]() -> bool { return n1 > n2; };
}
을하고 오류를 반환
lambda.cpp:48:46: error: cannot convert 'Compare(int, int)::__lambda2' to 'bool' in return
return [n1, n2]() -> bool { return n1 > n2; };
질문
이 람다의 도입의 목적으로 사용되지 않습니다 수 있음 C++에서는 여전히 ...
- 첫 번째 이유는 항상 참을 반환하는 이유는 무엇입니까?
- 두 번째 컴파일이 실패하는 이유는 무엇입니까?
, 올바르게 두 번째를 사용하는 방법을 추가 할 가치가있다. –
@RSahu, 완료, 감사합니다. – chris