diff --git a/arbor/include/arbor/cable_cell_param.hpp b/arbor/include/arbor/cable_cell_param.hpp
index 0de0dff56e55a77b8136ae36c4b6ba15835dddcb..92b1822cf2cd5b82ce1495f43373c913f31887ed 100644
--- a/arbor/include/arbor/cable_cell_param.hpp
+++ b/arbor/include/arbor/cable_cell_param.hpp
@@ -157,12 +157,15 @@ struct cv_policy {
         policy_ptr = ref.clone();
     }
 
-    cv_policy(cv_policy&&) = default;
-
     cv_policy(const cv_policy& other):
         policy_ptr(other.policy_ptr->clone()) {}
 
-    cv_policy& operator=(const cv_policy&) = default;
+    cv_policy& operator=(const cv_policy& other) {
+        policy_ptr = other.policy_ptr->clone();
+        return *this;
+    }
+
+    cv_policy(cv_policy&&) = default;
     cv_policy& operator=(cv_policy&&) = default;
 
     locset cv_boundary_points(const cable_cell& cell) const {