diff --git a/arbor/memory/device_coordinator.hpp b/arbor/memory/device_coordinator.hpp
index d886a0bed920c7b88b52fd42ce21f685c118c152..af8e775e76664d321a030a89c4acf3bba9bb5685 100644
--- a/arbor/memory/device_coordinator.hpp
+++ b/arbor/memory/device_coordinator.hpp
@@ -80,6 +80,10 @@ public:
         return *this;
     }
 
+    device_reference& operator=(const device_reference& ref) {
+        cuda_memcpy_d2d(pointer_, ref.pointer_, sizeof(T));
+    }
+
     operator T() const {
         T tmp;
         cuda_memcpy_d2h(&tmp, pointer_, sizeof(T));