2010-01-13 3 views
2

간단한 테스트를 만들고 true 또는 false를 반환하는 간단한 함수를 만들려고합니다.간단한 부스트 :: 람다 함수는 어떻게 만듭니 까?

error: no match for 'operator<' in '<unnamed>::_1 < depths[i]' 

내가 희망하는 것은 당신이 네임 스페이스를 잘있어 확신이

bool myFunct(unsigned int a, unsigned int b, unsigned int c, unsigned int d) 
{ 
    return c < 22; // Suppose 22 was in someArray[i] 
} 

답변

3

에 상응하는 무언가를 얻을 수 있습니다 : 나는이 작업을 수행 할 때

myfunct = (_3 < someArray[i]); 

, 나는이 오류 ?

그것은해야 하나

using namespace boost::lambda; 

또는

boost::lambda::_1 

자리가 부스트의 다른 부분 또는 다른 라이브러리에 사용되는 기억 (일어날 수있는 지역 TR1과 충돌!)하는 오류를 유발할 수 있습니다.

+0

예, 제 생각입니다. 나는 (내가이 질문을 게시 한 후에) 일하러가는 길에 대해 생각하지만 내 코드가 집에 있었기 때문에 그것을 테스트 할 수 없었다. 방금 확인 했어. 감사. –

2

다음 코드는 오류없이 컴파일됩니다. 나머지 코드는 어떻게 생겼습니까?

#include <boost/function.hpp> 
#include <boost/lambda/lambda.hpp> 

using namespace boost; 
using namespace boost::lambda; 

int main(void) 
{ 
    int someArray[5]; 
    int i; 
    function<bool(int,int)> f = (_1 < someArray[i]); 
} 
+0

+1 : 실제 코드 - 컴파일러에 액세스 할 수 없으므로 제공 할 수 없습니다 : / –

관련 문제