diff --git a/arbor/include/arbor/simd/sve.hpp b/arbor/include/arbor/simd/sve.hpp
index 6d2bd34b3776d988be0c5339be455c6e5a4d20c8..c9f9cd7051fa7bd7c07061645c37d546c8c832c3 100644
--- a/arbor/include/arbor/simd/sve.hpp
+++ b/arbor/include/arbor/simd/sve.hpp
@@ -800,10 +800,12 @@ void compound_indexed_add(
     }
 }
 
+[[maybe_unused]]
 static int width(const svfloat64_t& v) {
     return svlen_f64(v);
 };
 
+[[maybe_unused]]
 static int width(const svint64_t& v) {
     return svlen_s64(v);
 };
@@ -890,13 +892,13 @@ struct simd_cast_impl {
         return r;
     }
 };
+}  // namespace detail
 
 template <typename T, typename Other>
-void assign(T& a, const Other& b) {
+void assign(T& a, const Other& b, typename std::enable_if_t<detail::is_sve<T>::value>* = 0) {
     a = detail::simd_cast_impl<T>::cast(b);
 }
 
-}  // namespace detail
 }  // namespace simd
 }  // namespace arb