diff --git a/include/boost/unordered/detail/foa/concurrent_table.hpp b/include/boost/unordered/detail/foa/concurrent_table.hpp index c78c6d86..a19d28b9 100644 --- a/include/boost/unordered/detail/foa/concurrent_table.hpp +++ b/include/boost/unordered/detail/foa/concurrent_table.hpp @@ -414,9 +414,7 @@ public: concurrent_table& operator=(std::initializer_list il) { auto lck=exclusive_access(); super::clear(); - if (super::capacity()unprotected_emplace(v); } diff --git a/include/boost/unordered/detail/foa/core.hpp b/include/boost/unordered/detail/foa/core.hpp index 0daa0206..7e47568f 100644 --- a/include/boost/unordered/detail/foa/core.hpp +++ b/include/boost/unordered/detail/foa/core.hpp @@ -1642,6 +1642,24 @@ public: return it; } + void noshrink_reserve(std::size_t n) + { + /* used only on assignment after element clearance */ + BOOST_ASSERT(empty()); + + if(n){ + n=std::size_t(std::ceil(float(n)/mlf)); /* elements -> slots */ + n=capacity_for(n); /* exact resulting capacity */ + + if(n>capacity()){ + auto new_arrays_=new_arrays(n); + delete_arrays(arrays); + arrays=new_arrays_; + ml=initial_max_load(); + } + } + } + template void for_all_elements(F f)const { @@ -1947,24 +1965,6 @@ private: ml=initial_max_load(); } - void noshrink_reserve(std::size_t n) - { - /* used only on assignment after element clearance */ - BOOST_ASSERT(empty()); - - if(n){ - n=std::size_t(std::ceil(float(n)/mlf)); /* elements -> slots */ - n=capacity_for(n); /* exact resulting capacity */ - - if(n>capacity()){ - auto new_arrays_=new_arrays(n); - delete_arrays(arrays); - arrays=new_arrays_; - ml=initial_max_load(); - } - } - } - template void unchecked_insert(Value&& x) {