gpt4 book ai didi

c++ - 转义 lambda 的示例代码

转载 作者:太空狗 更新时间:2023-10-29 21:06:27 25 4
gpt4 key购买 nike

我看了很酷的剪辑: http://channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2011-C11-Panel-Scott-Meyers-Andrei-Alexandrescu-and-Herb-Sutter
并且 Andrei(54:00) 谈到转义引用本地人的 lambda。总的来说,我想我明白了这个问题,但我不确定我是否真的明白了,所以我想举个例子。那么有什么简单的例子吗?

最佳答案

这是一个简单的例子:

std::function<int()> f() {
int local;
return [&]() { return local; }
}

local 变量通过引用捕获,然后返回 lambda。稍后调用返回的函数将使用该引用,该引用现在无效并因此调用未定义的行为。对于编译器发出警告来说,这似乎是一个足够简单的案例。我希望我们将来会看到它。

这是一个更复杂的例子:

std::function<int()> f() {
int local;
return g(local);
}

std::function<int()> g(int const& param) {
return [&]() { return param; }
}

函数 g 可以在另一个翻译单元中定义,这会损害编译器发出警告的能力。

关于c++ - 转义 lambda 的示例代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7691504/

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