gpt4 book ai didi

c++ - 是否可以在 C++11/14 语法中编写一个 lambda 函数来查看父变量?

转载 作者:IT老高 更新时间:2023-10-28 22:23:25 25 4
gpt4 key购买 nike

抽象地说:

int i = 1;
auto go = [] () {
return i;
};

有没有可能用现代 C++ 语法做类似的东西?

最佳答案

正式地说,访问周围上下文的能力是函数(不能)和闭包(可以)之间的关键区别。根据环境捕获语言,可能通过复制或引用发生。

在 C++11(及更高版本)中,lambda 是 闭包,并且与 C++ 一样,我们有一种细粒度的方式来指定 如何 完成捕获:

  • 通过复制:隐式 [=]() { return i; } 或显式 [i]() { return i; }
  • 通过引用:隐式 [&]() { return i; } 或显式 [&i]() { return i; }

C++14 甚至引入了广义的 lambda 捕获,所以你可以捕获:

  • 通过移动:现有变量[i = std::move(i)]() { return i; }
  • 或创建一个新变量 [i = 1]() { return i; }

方括号分隔捕获列表。

关于c++ - 是否可以在 C++11/14 语法中编写一个 lambda 函数来查看父变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21524487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com