Я не знал, как назвать название, надеюсь, оно правильное ...
Я наткнулся на нижнее лямбда-определение и не понимаю синтаксис, в чем смысл var = [=]
иreturn [=]
?
также второй вопрос в функции ConstexprLambda()
, приведенной ниже, почему мы не можем вызвать add(1, 2)
вместо add(1, 2)()
, зачем нужны дополнительные ()
во время вызова identity(123)
в коде не используются дополнительные ()
?
вопрос (ы), помещенный в комментарии к коду.
auto identity = [](int n) constexpr
{
return n;
};
constexpr auto add = [](int x, int y)
{
auto L = [=] // what is = [=]?
{
return x;
};
auto R = [=]
{
return y;
};
return [=] // what return [=] means here?
{
return L() + R();
};
};
void ConstexprLambda()
{
static_assert(identity(123) == 123);
static_assert(add(1, 2)() == 3); // why can't we just add(1,2) like above?
}
Пример взят из здесь