From 9c8a7c443ae5d2e9b60e6b2a1b8654c016e772d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com>
Date: Thu, 1 Apr 2021 12:49:59 +0200
Subject: [PATCH] Fix constructors

- remove a useless static_assert in the standard constructor
- forbid default constructor: SubArray require an Array to exist
---
 src/utils/SubArray.hpp  | 4 +---
 tests/test_SubArray.cpp | 4 ++--
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/utils/SubArray.hpp b/src/utils/SubArray.hpp
index 2ab94694f..5b79bf44c 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 98e303dd1..647dc259e 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;
-- 
GitLab