【发布时间】:2019-08-19 01:11:34
【问题描述】:
以下代码无法编译:
struct S{};
void foo(std::unique_ptr<S> ptr)
{
auto l = [p = std::move(ptr)]()
{
auto p2 = std::move(p);
};
l();
}
原因是std::move(p) 返回一个左值引用,因此编译器尝试调用复制构造函数,该构造函数被删除。为什么move 在这里返回左值引用?
Here 是一个完整的样本。
【问题讨论】: