Index: boost/unordered/detail/equivalent.hpp =================================================================== --- boost/unordered/detail/equivalent.hpp (revision 79442) +++ boost/unordered/detail/equivalent.hpp (revision 79443) @@ -37,7 +37,7 @@ #if BOOST_UNORDERED_DETAIL_FULL_CONSTRUCT template - grouped_node(BOOST_UNORDERED_EMPLACE_ARGS) : + explicit grouped_node(BOOST_UNORDERED_EMPLACE_ARGS) : node_base(), group_prev_(), hash_(0) @@ -49,6 +49,10 @@ ~grouped_node() { boost::unordered::detail::destroy(this->value_ptr()); } + + grouped_node(grouped_node const&) { + assert(false); + } #else grouped_node() : node_base(), @@ -61,6 +65,9 @@ { group_prev_ = self; } + + private: + grouped_node& operator=(grouped_node const&); }; template @@ -77,7 +84,7 @@ #if BOOST_UNORDERED_DETAIL_FULL_CONSTRUCT template - grouped_ptr_node(BOOST_UNORDERED_EMPLACE_ARGS) : + explicit grouped_ptr_node(BOOST_UNORDERED_EMPLACE_ARGS) : bucket_base(), group_prev_(0), hash_(0) @@ -89,6 +96,10 @@ ~grouped_ptr_node() { boost::unordered::detail::destroy(this->value_ptr()); } + + grouped_ptr_node(grouped_ptr_node const&) { + assert(false); + } #else grouped_ptr_node() : bucket_base(), @@ -101,6 +112,9 @@ { group_prev_ = self; } + + private: + grouped_ptr_node& operator=(grouped_ptr_node const&); }; // If the allocator uses raw pointers use grouped_ptr_node Index: boost/unordered/detail/unique.hpp =================================================================== --- boost/unordered/detail/unique.hpp (revision 79442) +++ boost/unordered/detail/unique.hpp (revision 79443) @@ -38,7 +38,7 @@ #if BOOST_UNORDERED_DETAIL_FULL_CONSTRUCT template - unique_node(BOOST_UNORDERED_EMPLACE_ARGS) : + explicit unique_node(BOOST_UNORDERED_EMPLACE_ARGS) : node_base(), hash_(0) { @@ -49,6 +49,10 @@ ~unique_node() { boost::unordered::detail::destroy(this->value_ptr()); } + + unique_node(unique_node const&) { + BOOST_ASSERT(false); + } #else unique_node() : node_base(), @@ -59,6 +63,9 @@ void init(link_pointer) { } + + private: + unique_node& operator=(unique_node const&); }; template @@ -74,7 +81,7 @@ #if BOOST_UNORDERED_DETAIL_FULL_CONSTRUCT template - ptr_node(BOOST_UNORDERED_EMPLACE_ARGS) : + explicit ptr_node(BOOST_UNORDERED_EMPLACE_ARGS) : bucket_base(), hash_(0) { @@ -85,6 +92,10 @@ ~ptr_node() { boost::unordered::detail::destroy(this->value_ptr()); } + + ptr_node(ptr_node const&) { + BOOST_ASSERT(false); + } #else ptr_node() : bucket_base(), @@ -95,6 +106,9 @@ void init(link_pointer) { } + + private: + ptr_node& operator=(ptr_node const&); }; // If the allocator uses raw pointers use ptr_node