c++ - lambda 表达式中的 return 语句

标签 c++ boost-lambda

我在 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/

相关文章:

c++ - Premake 生成的解决方案不会在 Release 中编译,但会在 Debug 中编译

android - Qt Creator Android 错误 "Platform SDK installed"

c++ - 为什么模板及其模板成员的模板参数列表不能合并?

c++ - Boost.Lambda 和 Boost.Function 不能很好地与 Boost.Array 配合使用,为什么?

c++ - 如何在复合类型上使用 Boost.Bind?

c++ - 准确提取 float 的小数部分

c++ - 指向数组的指针作为模板参数

c++ - 将 boost lambda 与复合表达式一起使用

c++ - 使用共享指针 vector boost lambda

c++ - boost::function 和 boost::bind 很酷,但是 boost::lambda 真正酷的是什么?