id summary reporter owner description type status milestone component version severity resolution keywords cc 7175 Rev 74766 breaks unordered_map on gcc 3.4 luc_j_bourhis@… Daniel James "I was initially confronted to that bug with 1.50 and then I pinpointed the first bad rev using git bisect. Here is how to reproduce the problem: ~> gcc --version gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3) ... ~> cat regress_unordered.cpp #include #include int main() { boost::unordered_map counts; counts[""one""]++; std::cout << counts[""one""] << std::endl; } ~> g++ -c regress_unordered.cpp -I/path/to/boost /home/luc/Developer/cctbx/boost/boost/unordered/detail/allocate.hpp: In instantiation of `boost::unordered::detail::allocator_traits > > >': /home/luc/Developer/cctbx/boost/boost/unordered/detail/unique.hpp:155: instantiated from `boost::unordered::detail::pick_node >, std::pair >' /home/luc/Developer/cctbx/boost/boost/unordered/detail/unique.hpp:202: instantiated from `boost::unordered::detail::map >, std::string, size_t, boost::hash, std::equal_to >' /home/luc/Developer/cctbx/boost/boost/unordered/unordered_map.hpp:59: instantiated from `boost::unordered::unordered_map, std::equal_to, std::allocator > >' regress_unordered.cpp:5: instantiated from here /home/luc/Developer/cctbx/boost/boost/unordered/detail/allocate.hpp:985: error: `template static typename boost::disable_if_c<( boost::unordered::detail::has_construct::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::construct(Alloc&, T*, const T&) [with T = T, Alloc = std::allocator > >]' and `template static typename boost::enable_if_c<( boost::unordered::detail::has_construct::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::construct(Alloc&, T*, const T&) [with T = T, Alloc = std::allocator > >]' cannot be overloaded /home/luc/Developer/cctbx/boost/boost/unordered/detail/allocate.hpp:1005: error: `template static typename boost::disable_if_c<( boost::unordered::detail::has_destroy::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::destroy(Alloc&, T*) [with T = T, Alloc = std::allocator > >]' and `template static typename boost::enable_if_c<( boost::unordered::detail::has_destroy::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::destroy(Alloc&, T*) [with T = T, Alloc = std::allocator > >]' cannot be overloaded /home/luc/Developer/cctbx/boost/boost/unordered/detail/allocate.hpp: In instantiation of `boost::unordered::detail::allocator_traits >': /home/luc/Developer/cctbx/boost/boost/unordered/detail/unique.hpp:155: instantiated from `boost::unordered::detail::pick_node >, std::pair >' /home/luc/Developer/cctbx/boost/boost/unordered/detail/unique.hpp:202: instantiated from `boost::unordered::detail::map >, std::string, size_t, boost::hash, std::equal_to >' /home/luc/Developer/cctbx/boost/boost/unordered/unordered_map.hpp:59: instantiated from `boost::unordered::unordered_map, std::equal_to, std::allocator > >' regress_unordered.cpp:5: instantiated from here /home/luc/Developer/cctbx/boost/boost/unordered/detail/allocate.hpp:985: error: `template static typename boost::disable_if_c<( boost::unordered::detail::has_construct::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::construct(Alloc&, T*, const T&) [with T = T, Alloc = std::allocator]' and `template static typename boost::enable_if_c<( boost::unordered::detail::has_construct::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::construct(Alloc&, T*, const T&) [with T = T, Alloc = std::allocator]' cannot be overloaded /home/luc/Developer/cctbx/boost/boost/unordered/detail/allocate.hpp:1005: error: `template static typename boost::disable_if_c<( boost::unordered::detail::has_destroy::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::destroy(Alloc&, T*) [with T = T, Alloc = std::allocator]' and `template static typename boost::enable_if_c<( boost::unordered::detail::has_destroy::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::destroy(Alloc&, T*) [with T = T, Alloc = std::allocator]' cannot be overloaded /home/luc/Developer/cctbx/boost/boost/unordered/detail/allocate.hpp: In instantiation of `boost::unordered::detail::allocator_traits > >': /home/luc/Developer/cctbx/boost/boost/unordered/unordered_map.hpp:65: instantiated from `boost::unordered::unordered_map, std::equal_to, std::allocator > >' regress_unordered.cpp:5: instantiated from here /home/luc/Developer/cctbx/boost/boost/unordered/detail/allocate.hpp:985: error: `template static typename boost::disable_if_c<( boost::unordered::detail::has_construct::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::construct(Alloc&, T*, const T&) [with T = T, Alloc = std::allocator >]' and `template static typename boost::enable_if_c<( boost::unordered::detail::has_construct::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::construct(Alloc&, T*, const T&) [with T = T, Alloc = std::allocator >]' cannot be overloaded /home/luc/Developer/cctbx/boost/boost/unordered/detail/allocate.hpp:1005: error: `template static typename boost::disable_if_c<( boost::unordered::detail::has_destroy::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::destroy(Alloc&, T*) [with T = T, Alloc = std::allocator >]' and `template static typename boost::enable_if_c<( boost::unordered::detail::has_destroy::value && boost::is_same::value), void>::type boost::unordered::detail::allocator_traits::destroy(Alloc&, T*) [with T = T, Alloc = std::allocator >]' cannot be overloaded /home/luc/Developer/cctbx/boost/boost/unordered/detail/buckets.hpp: In member function `void boost::unordered::detail::buckets::create_buckets() [with A = std::allocator >, Bucket = boost::unordered::detail::ptr_bucket, Node = boost::unordered::detail::ptr_node >, Policy = boost::unordered::detail::prime_policy]': /home/luc/Developer/cctbx/boost/boost/unordered/detail/table.hpp:403: instantiated from `void boost::unordered::detail::table::reserve_for_insert(size_t) [with Types = boost::unordered::detail::map >, std::string, size_t, boost::hash, std::equal_to >]' /home/luc/Developer/cctbx/boost/boost/unordered/detail/unique.hpp:402: instantiated from `typename boost::unordered::detail::table::value_type& boost::unordered::detail::table_impl::operator[](const typename boost::unordered::detail::table::key_type&) [with Types = boost::unordered::detail::map >, std::string, size_t, boost::hash, std::equal_to >]' /home/luc/Developer/cctbx/boost/boost/unordered/unordered_map.hpp:1195: instantiated from `typename boost::unordered::unordered_map::mapped_type& boost::unordered::unordered_map::operator[](const K&) [with K = std::string, T = size_t, H = boost::hash, P = std::equal_to, A = std::allocator >]' regress_unordered.cpp:6: instantiated from here /home/luc/Developer/cctbx/boost/boost/unordered/detail/buckets.hpp:726: error: no matching function for call to `boost::unordered::detail::allocator_traits > > >::construct(std::allocator > >&, boost::unordered::detail::ptr_bucket*, boost::unordered::detail::ptr_bucket)' " Bugs closed To Be Determined unordered Boost 1.50.0 Problem fixed