Opened 12 years ago
Closed 12 years ago
#5119 closed Bugs (fixed)
[C++0x] unordered_map doesn't support cp-ctor.
| Reported by: | Owned by: | Daniel James | |
|---|---|---|---|
| Milestone: | Boost 1.47.0 | Component: | unordered |
| Version: | Boost 1.45.0 | Severity: | Problem |
| Keywords: | Cc: | denis.arnaud_boost@… |
Description
hi,
during compiling following testcase on gcc-4.6 snapshot i get an error.
#include <boost/unordered_map.hpp> struct S { boost::unordered_map<const void*, int > m_; }; boost::unordered_map<const void*, S> m2_; void foo ( const void* p ) { S s; m2_.insert ( std::make_pair ( p, s ) ); }
(...)
include/c++/4.6.0/bits/stl_pair.h:110:17:
error: 'constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&)
[with _T1 = const void* const, _T2 = S, std::pair<_T1, _T2>
= std::pair<const void* const, S>]' is implicitly deleted because
the default definition would be ill-formed:
.../include/c++/4.6.0/bits/stl_pair.h:110:17:
error: use of deleted function 'S::S(const S&)
the major problem is a lack of copy constructor in unordered_map when compiled with -std=gnu++0x. the !defined(BOOST_NO_RVALUE_REFERENCES) activates only move semantics while documentation describes cp-ctor. http://www.boost.org/doc/libs/1_45_0/doc/html/boost/unordered_map.html#id1354372-bb
GCC bugzilla entry about this issue: http://gcc.gnu.org/PR47417
Change History (4)
comment:1 by , 12 years ago
comment:2 by , 12 years ago
| Milestone: | To Be Determined → Boost 1.47.0 |
|---|---|
| Status: | new → assigned |
That will hopefully fix it, but it's too late for 1.46.
I'm still seeing a lot of failures for gcc 4.6, but they also show up on gcc 4.5 and all seem to be exception related. Since they're not showing up on the regression tests, I suspect this is a problem with the macports version of gcc rather than a bug in boost or gcc in general.
comment:3 by , 12 years ago
| Cc: | added |
|---|
comment:4 by , 12 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |

(In [68445]) Add copy constructors and assignment operators when using rvalue references. Refs #5119.