diff --git a/src/utils/Array.hpp b/src/utils/Array.hpp
index b06def6bcd511ac19db91a10aff4a8966ab63838..7a0bec6f661d2e220349a3ac55660ae200431aac 100644
--- a/src/utils/Array.hpp
+++ b/src/utils/Array.hpp
@@ -106,6 +106,7 @@ class Array
   ~Array() = default;
 };
 
+// map, multimap, unordered_map and stack cannot be copied this way
 template <typename Container>
 PASTIS_INLINE
 Array<std::remove_const_t<typename Container::value_type>>
diff --git a/tests/test_Array.cpp b/tests/test_Array.cpp
index e6a31ae8953ebd908e0b0e36e4b3e567b1eb3826..8bac68679ce4bd245fc1ff846adbfaf4a691e82a 100644
--- a/tests/test_Array.cpp
+++ b/tests/test_Array.cpp
@@ -7,6 +7,9 @@
 #include <vector>
 #include <set>
 #include <list>
+#include <deque>
+#include <valarray>
+#include <unordered_set>
 
 // Instantiate to ensure full coverage is performed
 template class Array<int>;
@@ -176,6 +179,15 @@ TEST_CASE("Array", "[utils]") {
       }
     }
 
+    {
+      std::valarray<int> v{1,2,5,3};
+      Array<int> v_array = convert_to_array(v);
+
+      REQUIRE(v_array.size() == v.size());
+      REQUIRE(((v_array[0] == 1) and (v_array[1] == 2) and
+               (v_array[2] == 5) and (v_array[3] == 3)));
+    }
+
     {
       std::set<int> s{4,2,5,3,1,3,2};
       Array<int> s_array = convert_to_array(s);
@@ -186,6 +198,20 @@ TEST_CASE("Array", "[utils]") {
                (s_array[4] == 5)));
     }
 
+    {
+      std::unordered_set<int> us{4,2,5,3,1,3,2};
+      Array<int> us_array = convert_to_array(us);
+
+      REQUIRE(us_array.size() == us.size());
+
+      std::set<int> s;
+      for (size_t i=0; i<us_array.size(); ++i) {
+        REQUIRE((us.find(us_array[i]) != us.end()));
+        s.insert(us_array[i]);
+      }
+      REQUIRE(s.size() == us_array.size());
+    }
+
     {
       std::multiset<int> ms{4,2,5,3,1,3,2};
       Array<int> ms_array = convert_to_array(ms);
@@ -206,6 +232,17 @@ TEST_CASE("Array", "[utils]") {
                (l_array[2] == 5) and (l_array[3] == 6) and
                (l_array[4] == 2)));
     }
+
+    {
+      std::deque<int> q{1,3,5,6,2};
+      q.push_front(2);
+      Array<int> q_array = convert_to_array(q);
+
+      REQUIRE(q_array.size() == q.size());
+      REQUIRE(((q_array[0] == 2) and (q_array[1] == 1) and
+               (q_array[2] == 3) and (q_array[3] == 5) and
+               (q_array[4] == 6) and (q_array[5] == 2)));
+    }
   }
 
 #ifndef NDEBUG