[Bug libstdc++/77528] std::queue default constructor unnecessarily creates temporary of underlying Container
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Sep 8 13:03:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77528
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2016-09-08
Ever confirmed|0 |1
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Untested fix:
--- a/libstdc++-v3/include/bits/stl_queue.h
+++ b/libstdc++-v3/include/bits/stl_queue.h
@@ -143,12 +143,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
queue(const _Sequence& __c = _Sequence())
: c(__c) { }
#else
+ template<typename _Seq = _Sequence, typename _Requires =
+ typename enable_if<is_default_constructible<_Seq>::value>::type>
+ queue()
+ : c() { }
+
explicit
queue(const _Sequence& __c)
: c(__c) { }
explicit
- queue(_Sequence&& __c = _Sequence())
+ queue(_Sequence&& __c)
: c(std::move(__c)) { }
template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
More information about the Gcc-bugs
mailing list