2010-07-22 4 views
1

std::for_each 호출 내에서 람다 식을 만들었습니다. 그것에서람다 식의 return 문

이 같은 코드가있다,하지만 난 내 머리에

 
error: expected primary-expression before ‘return’ 
error: expected `]' before ‘return’ 

내가 boost-lambda이 펑 주로 작동하는지 생각 말해 오류를 구축, 그래서 return 문 이후 그렇게하지 않습니다 부르면 작동하지 않습니다.

당신은 그것이 무엇인지 어떻게 고쳐야하는지 알고 있습니까?

덕분에 당신은 람다 식 내부 return 명령을 사용할 수 없습니다

 
namespace bl = boost::lambda; 
int a, b; 
bl::var_type::type a_(bl::var(a)); 
bl::var_type::type b_(bl::var(b)); 

std::for_each(v.begin(), v.end(), (
// ..do stuff here 
if_( a_ > _b_) 
[ 
std::cout << _1, 
return 
] 
)); 

답변

3

AFG. if_then_else_return과 같은 구조를 사용하십시오. 결과를 산출 할 수있는 구문을 제공합니다. 하지만 귀하의 경우 return도 필요하지 않습니다. 그냥 버리십시오.

3

그냥 boost-lambda를 잊어 버리고 새로운 표준 C++ 람다 식을 대신 사용하십시오.

Explanation & Example

+0

사실 그는 여기에 람다를 사용하지 않는 것이 좋습니다. 내 대답을 확인하십시오. –

0

@MBZ는 (이 경우에는 그러나 하지 람다) C++ (11)를 사용하여 오른쪽이다. 물론

int a, b; 
std::vector<int> v; 
for(int e : v) 
{ 
    if(a > b) 
    std::cout << e; 
} 

당신 는 람다와 동일한 기능을 수행하지만, 왜 그것을 아래 코드와 같은을 복잡하게 수 : 여기

는 C++ (11)과의 코드?