문제

최근에 저는 VC2010에서 Lambdas에 대한 지원에 대해 매우 흥분했습니다. 나는이 기능이 C ++를 더 나은 것으로 바꾸는 데있어서의 잠재력을 최대한 활용하기 시작했습니다.

그러나 나는이 잠재력이 Boost 및 QT와 같은 일상 라이브러리에서 Lambdas의 주 스트림 지원에 크게 의존한다는 것을 깨달았습니다.
C ++ 0X의 새로운 기능으로 이러한 라이브러리를 확장 할 계획이 있는지 아는 사람이 있습니까?

Lambdas는 실제로 Boost의 필요성을 대체합니다 :: Lambda와 그와 상호 작용하는 모든 것을 향상시킵니다. QT는 모든 컨테이너에서 Lambdas에 대한 지원을 추가 할 수 있으며 어쩌면 대안을 정의하는 방법으로 SLOT에스

도움이 되었습니까?

해결책

Lambdas는 이미 기존 라이브러리에 매우 적합합니다. 함수가 템플릿 매개 변수에 의해 주어진 유형의 함수 객체를 수락하는 모든 곳.

이것은 그들에 대한 가장 큰 것들 중 하나입니다. 그들은 기존의 연습을 멋진 구문으로 체계화하는 언어 기능의 전형적인 예입니다.

분명히 부스트 람다 라이브러리가 중복되지만 새로운 기능을 추가 할 필요는 없습니다.

다른 팁

Lambda의 사용이 라이브러리의 지원에 어떻게 의존하는지 모르겠습니다. Lambdas는 다른 작은 알고리즘을 감싸고 다른 언어/라이브러리 기능과 깔끔하게 맞도록 많은 클래스를 만들 필요가 없습니다.std::function 생각 나다). 기능 객체 또는 기능 포인터를 전달하는 곳마다 Lambdas도 사용할 수 있습니다.

따라서 주로 기존 코드와 라이브러리를 사용하기위한 또 다른 대안을 추가합니다. 라이브러리가 Lambda를 더 잘 지원할 수있는 유일한 방법은보다 기능적인 스타일의 접근 방식을 사용하는 것입니다.

이러한 라이브러리는 관련 C ++ 0X 기능에 대한 적절한 컴파일러 지원이있을 때까지 기다릴 가능성이 있으며 주류 컴파일러가 지원할 때까지 크게 방해하지 않습니다. 숨을 참지 마십시오.

이것은 사실이 아닙니다. 부스트 :: lambda를 C ++ 0x Lambda로 대체 할 수 없습니다. 보다 여기 어떤 이유로 (부스트 바인딩에 대해서도, 나는 대부분의 전송을 생각합니다)

또한 @Daniel 이것 슬롯에 Lambda Functions/Boost 바인드를 사용하여 시작하는 데 도움이 될 수 있습니다. 그것은 내 인생을 엄청나게 쉽게 만듭니다.

또한 내 출처에서 @litb, Lambdas는 변경되지 않을 것입니다 (Argh)

대부분의 라이브러리는 콜백에 표준 기능 포인터를 사용합니다. C ++ 0X Lambdas는 기능 포인터로 사용할 수 있으므로 대부분의 라이브러리를 수정할 필요가 없습니다. 다른 라이브러리는 템플릿을 사용하여 호출 가능한 객체를 가져갈 수 있습니다 (예 : std::foreach 수정할 필요는 없습니다).

라이브러리가 변경 될 수 있다고 생각할 수있는 유일한 C ++ 0X 기능은 강력하게 입력 한 것입니다. enums. 또한 라이브러리가 사용하기 시작할 수 있습니다 extern 컴파일 시간을 줄이기위한 템플릿.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top