gpt4 book ai didi

c++ - 在 lambda 中没有按值分配拷贝

转载 作者:太空狗 更新时间:2023-10-29 20:16:04 26 4
gpt4 key购买 nike

有人可以向我解释为什么以下内容不起作用(testblub 中的 const)。由于 test 是按我假设的值复制的,我可以设置它,因为它是本地仿函数。

#include <memory>

int main()
{
std::shared_ptr<bool> test;
auto blub = [test]() {
test = std::make_shared<bool>(false);
};

return 0;
}

为了让它工作,首先我必须引入一个新的 shared_ptr,分配 test 然后我可以正常分配另一个 shared_ptr。顺便说一句:我正在使用 clang 3.1

最佳答案

因为lambdas的operator()默认是const。您需要使用 mutable 关键字使其成为非常量:

auto blub = [test]() mutable {
test = std::make_shared<bool>(false);
};

关于c++ - 在 lambda 中没有按值分配拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10866087/

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