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 <BOOST_UNORDERED_EMPLACE_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 <typename T>
@@ -77,7 +84,7 @@
 
 #if BOOST_UNORDERED_DETAIL_FULL_CONSTRUCT
         template <BOOST_UNORDERED_EMPLACE_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 <BOOST_UNORDERED_EMPLACE_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 <typename T>
@@ -74,7 +81,7 @@
 
 #if BOOST_UNORDERED_DETAIL_FULL_CONSTRUCT
         template <BOOST_UNORDERED_EMPLACE_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
