gpt4 book ai didi

c++ - 嵌套 Lambda 捕获问题

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

我已经使用 Visual Studio 2010 编译器编译了它,它在嵌套 lambda 捕获第一个 lambda 已经捕获的变量时存在编译器错误问题:

    Functor& fn, const WorkData& workData

group.run([&fn, workData](){
async_future<ProcessorResult> future([&fn, workData]() -> ProcessorResult{
ProcessorResult result = fn.Process(workData);

return result;
});
});

我明白了:

**error C3480**: '`anonymous-namespace'::<lambda3>::fn': a lambda capture variable must be from an enclosing function scope

似乎编译器不喜欢我尝试在未来实例中捕获 group.run() 方法已经捕获的变量。

如果我创建本地拷贝,它可以工作:

    group.run([&fn, workData](){
Functor& fnlocal = fn;
WorkData workDatalocal = workData;

async_future<ProcessorResult> future([&fnlocal, workDatalocal]() -> ProcessorResult{
ProcessorResult result = fnlocal.Process(workDatalocal);

return result;
});
});

这种行为符合吗?我总是需要复制捕获的变量才能在嵌套的 lambda 上捕获相同的变量?

最佳答案

这是 Visual Studio 2010 C++ 编译器的一个已知限制。这是跟踪它的连接问题

目前在下一版本中标记为已修复

关于c++ - 嵌套 Lambda 捕获问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959234/

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