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