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: 32.9.10.2 [futures.task.members] Status: Resolved Submitter: Daniel Krügler Opened: 2010-12-08 Last modified: 2016-01-28

Priority: Not Prioritized

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

View all issues with Resolved status.

Discussion:

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

>     packaged_task& operator=(packaged_task&& other);

> > 7 Effects:

> > - [...]

> > - `packaged_task<R, ArgTypes...>(other).swap(*this)`.

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 32.9.10.2 [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