gpt4 book ai didi

c++ - 为什么需要在 VS 中为 packaged_task 复制构造函数

转载 作者:行者123 更新时间:2023-11-30 05:04:14 27 4
gpt4 key购买 nike

class MoveOnlyOperation
{
public:
MoveOnlyOperation() = default;
MoveOnlyOperation(const MoveOnlyOperation&) = delete;
MoveOnlyOperation(MoveOnlyOperation&&) = default;

int operator()()
{
return 0;
}
};

我想像这样在 packaged_task 中包装一个对象实例:

std::packaged_task<void()> task(MoveOnlyOperation{}); 

我收到“error C2280: 'MoveOnlyOperation::MoveOnlyOperation(const MoveOnlyOperation &)': attempting to reference a deleted function

C++ 11 的文档说可以完美转发 packaged_task 中的实例。我对 clang 也没有问题。

它有一些实现定义了关于如何实现 packaged_task 或 VS 2015 中的一个错误(可能在以后因为我遇到了与 http://rextester.com/WBEH22233 相同的问题)

最佳答案

这是一个 known bug在 MSVC 的 packaged_task 实现中。他们将可调用对象存储在 std::function 中,requires that参数是可复制构造的。

关于c++ - 为什么需要在 VS 中为 packaged_task 复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48995633/

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