C ++:输入lambda表达式

时间:2019-01-09 22:50:37

标签: c++ lambda

我有以下代码:

auto x_is_valid = [](const MyX &x) -> bool {
    return x.source != MyXValue::ABC;
};

auto objects = var_.var_in_box(*a, b, c, x_is_valid);

我想知道:

  • x_is_valid是如何计算的?
  • 输入参数在哪里?

我该如何正确阅读?

谢谢!

2 个答案:

答案 0 :(得分:2)

数学类比可能会有所帮助。想象一个函数Set myFolder = …

  

f(x) = x^2是如何计算的?

就在这里:对于任何f,计算公式为x

  

它将输入参数放在哪里?

来自呼叫者。

上面的“答案”毫无意义,但是如果您从数学意义上在函数的上下文中理解它们,那么它们可能会有所帮助。

答案 1 :(得分:0)

如果var_.var_in_box期望将bool作为最后一个参数,则调用

auto objects = var_.var_in_box(*a, b, c, x_is_valid);

应该会导致编译错误。

如果上面的行编译没有错误,则上面的最后一个参数类型是可调用对象,而不是bool。大概,该函数使用传入的可调用对象进行函数调用。无法从发布的代码中确定在类的var_in_box成员函数的实现中如何调用可调用对象。