This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Resolved status.

2025. Incorrect semantics of move assignment operator of packaged_task

Section: [futures.task.members] Status: Resolved Submitter: Daniel Krügler Opened: 2010-12-08 Last modified: 2016-02-10

Priority: Not Prioritized

View all other issues in [futures.task.members].

View all issues with Resolved status.


According to [futures.task.members] p. 7 bullet 2:

packaged_task& operator=(packaged_task&& other);

7 Effects:

The argument other given to the move constructor is an lvalue and must be converted into an rvalue via appropriate usage of std::move.

Proposed Resolution

The suggested wording changes are against the working draft N3242.

  1. Change [futures.task.members] p. 7 bullet 2 as indicated:

    packaged_task& operator=(packaged_task&& other);

    7 Effects:

    • [...]

    • packaged_task(std::move(other)).swap(*this).

Proposed resolution:

Resolved 2011-03 Madrid meeting by paper N3278