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.

### 976. Class template `std::stack` should be movable

Section: 22.6.6.2 [stack.defn] Status: Resolved Submitter: Daniel Krügler Opened: 2009-02-01 Last modified: 2016-01-28

Priority: Not Prioritized

View all issues with Resolved status.

Discussion:

The synopsis given in 22.6.6.2 [stack.defn] does not show up

>     requires MoveConstructible<Cont> stack(stack&&);
>     requires MoveAssignable<Cont> stack& operator=(stack&&);

although the other container adaptors do provide corresponding members.

[ Batavia (2009-05): ]

> We agree with the proposed resolution.

> Move to Tentatively Ready.

[ 2009-07 Frankfurt ]

> Moved from Tentatively Ready to Open only because the wording needs to be tweaked for concepts removal.

[ 2009-08-18 Daniel updates the wording and Howard sets to Review. ]

[ 2009-08-23 Howard adds: ]

> 1194 also adds these move members using an editorially different style.

[ 2009-10 Santa Cruz: ]

> Mark NAD Editorial Resolved, addressed by issue 1194.

Proposed resolution:

In the class stack synopsis of 22.6.6.2 [stack.defn] insert:

>     template <class T, class Container = deque<T> >
>     class stack {
>       [..]
>       explicit stack(const Container&);
>       explicit stack(Container&& = Container());
>       stack(stack&& s) : c(std::move(s.c)) {}
>       stack& operator=(stack&& s) { c = std::move(s.c); return *this; }
>       [..]
>     };