我在 std::for_each
调用中创建了一个 lambda 表达式。
里面有这样的代码,但是我有构建错误告诉我
error: expected primary-expression before ‘return’ error: expected `]' before ‘return’
在我看来,我认为 boost-lambda
主要与仿函数一起工作,因此由于 return
语句不是那样的,因此调用它不起作用。
你知道它是什么以及如何解决它吗?
谢谢 AFG
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 ] ));
最佳答案
您不能在 lambda 表达式中使用 return
指令。使用像 if_then_else_return
这样的结构。它们提供允许产生结果的语法。
但在您的情况下,甚至不需要 return
,只需将其丢弃即可。
关于c++ - lambda 表达式中的 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3310149/