diff --git a/src/utils/SubArray.hpp b/src/utils/SubArray.hpp
index 2ab94694febea144c527402848302d6bca7cd38b..5b79bf44c0c52581b697c4d3917d3c3ff27f16a4 100644
--- a/src/utils/SubArray.hpp
+++ b/src/utils/SubArray.hpp
@@ -75,12 +75,10 @@ class [[nodiscard]] SubArray
     : m_array{array}, m_sub_values{&array[0] + begin}, m_size{size}
   {
     Assert(begin + size <= array.size(), "SubView is not contained in the source Array");
-    static_assert(not std::is_const<DataType>(), "Cannot allocate SubArray of const data: only view is "
-                                                 "supported");
   }
 
   PUGS_INLINE
-  SubArray() = default;
+  SubArray() = delete;
 
   PUGS_INLINE
   SubArray(const SubArray&) = default;
diff --git a/tests/test_SubArray.cpp b/tests/test_SubArray.cpp
index 98e303dd1681378a50fdb281ab65bb83273a50e2..647dc259e4184680ab703f2f334796904a2ecc77 100644
--- a/tests/test_SubArray.cpp
+++ b/tests/test_SubArray.cpp
@@ -54,7 +54,7 @@ TEST_CASE("SubArray", "[utils]")
   SECTION("sub array copy")
   {
     a.fill(0);
-    SubArray<int> sub_a;
+    SubArray<int> sub_a{a, 2, 1};
     sub_a = SubArray{a, 5, 5};
     for (size_t i = 0; i < sub_a.size(); ++i) {
       sub_a[i] = i + 1;
@@ -95,7 +95,7 @@ TEST_CASE("SubArray", "[utils]")
   SECTION("errors")
   {
     a.fill(0);
-    SubArray<int> sub_a;
+    SubArray<int> sub_a{a, 0, 0};
     sub_a = SubArray{a, 5, 5};
     for (size_t i = 0; i < sub_a.size(); ++i) {
       sub_a[i] = i + 1;