From 902c8b4e07eeeed63bd3c037da616f545ec45f24 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Thu, 25 Oct 2018 20:46:20 +0200
Subject: [PATCH] manual include of experimental array for safety

---
 alib2std/src/extensions/container/array.hpp | 25 ++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/alib2std/src/extensions/container/array.hpp b/alib2std/src/extensions/container/array.hpp
index 9e86f20a6a..81baf9900b 100644
--- a/alib2std/src/extensions/container/array.hpp
+++ b/alib2std/src/extensions/container/array.hpp
@@ -25,7 +25,6 @@
 #define __ARRAY_HPP_
 
 #include <array>
-#include <experimental/array>
 
 #include <ostream>
 #include <sstream>
@@ -34,6 +33,30 @@
 #include <extensions/compare.hpp>
 #include <extensions/range.hpp>
 
+namespace std {
+
+namespace experimental {
+
+namespace details {
+
+template <class D, class...> struct return_type_helper { using type = D; };
+template <class... Types>
+struct return_type_helper<void, Types...> : std::common_type<Types...> {};
+
+template <class D, class... Types>
+using return_type = std::array<typename return_type_helper<D, Types...>::type,
+                                 sizeof...(Types)>;
+}
+
+template < class D = void, class... Types>
+constexpr details::return_type<D, Types...> make_array(Types&&... t) {
+  return {std::forward<Types>(t)... };
+}
+
+} /* namespace experimental */
+
+} /* namespace std */ //FIXME remove whole thing when make_array gets from experimental to the standard
+
 namespace ext {
 
 /**
-- 
GitLab