C++ async:An attempt was made to reference a deleted function

  asynchronous, c++

I want to use async to execute such a function in the environment of C++17.Here is my class

class Item {
    public:
        int v=1;
        Item() {printf(" construct n");};
        Item(const Item&it) {printf(" construct  copy n");}
        Item( Item&& it) {printf("  universal copy n");}
        ~Item() {printf("destruction n");}
    };

Here is my function

    Item func(float r) {return Item(); }

Here is my main function

int main()
    { 
        auto  sft=std::async(launch::async,func, 1);
    };
    

Here is my problem: the compiler indicates that: "Item & item:: operator = (const item &)": attempt to reference a deleted function", However, when I remove the move construct function; it passes the compile stage, with the execution of copy construct function 2 times, could someone tell me why? I don’t want to call the copy construct function, I just want to move the result to the sft. thanks a lot!

Source: Windows Questions C++

LEAVE A COMMENT