Index: include/bits/stl_queue.h =================================================================== --- include/bits/stl_queue.h (revision 129768) +++ include/bits/stl_queue.h (working copy) @@ -220,14 +220,16 @@ * to it. The time complexity of the operation depends on the * underlying sequence. */ +#ifndef __GXX_EXPERIMENTAL_CXX0X__ void push(const value_type& __x) { c.push_back(__x); } - -#ifdef __GXX_EXPERIMENTAL_CXX0X__ - void - push(value_type&& __x) - { c.push_back(std::move(__x)); } +#else + // NB: DR 756. + template + void + push(_Args&&... __args) + { c.push_back(std::forward<_Args>(__args)...); } #endif /** @@ -507,20 +509,22 @@ * The time complexity of the operation depends on the underlying * sequence. */ +#ifndef __GXX_EXPERIMENTAL_CXX0X__ void push(const value_type& __x) { c.push_back(__x); std::push_heap(c.begin(), c.end(), comp); } - -#ifdef __GXX_EXPERIMENTAL_CXX0X__ - void - push(value_type&& __x) - { - c.push_back(std::move(__x)); - std::push_heap(c.begin(), c.end(), comp); - } +#else + // NB: DR 756. + template + void + push(_Args&&... __args) + { + c.push_back(std::forward<_Args>(__args)...); + std::push_heap(c.begin(), c.end(), comp); + } #endif /** Index: include/bits/stl_stack.h =================================================================== --- include/bits/stl_stack.h (revision 129768) +++ include/bits/stl_stack.h (working copy) @@ -184,14 +184,16 @@ * to it. The time complexity of the operation depends on the * underlying sequence. */ +#ifndef __GXX_EXPERIMENTAL_CXX0X__ void push(const value_type& __x) { c.push_back(__x); } - -#ifdef __GXX_EXPERIMENTAL_CXX0X__ - void - push(value_type&& __x) - { c.push_back(std::move(__x)); } +#else + // NB: DR 756. + template + void + push(_Args&&... __args) + { c.push_back(std::forward<_Args>(__args)...); } #endif /**