gpt4 book ai didi

c++ - 不能 std::move 从 lambda 捕获到 lambda 内部的函数调用,为什么?

转载 作者:可可西里 更新时间:2023-11-01 18:06:34 25 4
gpt4 key购买 nike

<分区>

在下面的代码中

#include <memory>
#include <thread>
#include <utility>

void f1(std::unique_ptr<int>&& uptr) {}

void f(std::unique_ptr<int>&& uptr)
{
auto thread = std::thread([uptr{ std::move(uptr) }]() {
f1(std::move(uptr));
});
}

int main()
{
return 0;
}

无法编译 lambda 中对 std::move 的调用:

[x86-64 gcc 8.1 #1] error: binding reference of type'std::unique_ptr<int>&&'
to 'std::remove_reference<const> std::unique_ptr<int>&>::type'
{aka 'const std::unique_ptr<int>'} discards qualifiers

现场演示:https://godbolt.org/g/9dQhEX

为什么会出现此错误,我该如何解决? const 从何而来?

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