@@ -256,52 +256,6 @@ namespace hud
256256 constexpr compressed_tuple_impl (compressed_tuple_impl &&) = default;
257257 };
258258
259- /* *
260- * Recursively assign a compressed_tuple to another.
261- * @tparam count Number of element to assign
262- */
263- template <usize count>
264- struct tuple_assign
265- {
266- /* *
267- * Assign a 2 compressed_tuple elements.
268- * @tparam types_t... List of types_t of the compressed_tuple to
269- * @tparam u_types_t... List of types_t of the compressed_tuple from
270- * @param to The assigned compressed_tuple
271- * @param from The compressed_tuple to assign
272- */
273- template <typename ... types_t , typename ... u_types_t >
274- constexpr void operator ()([[maybe_unused]] hud::compressed_tuple<types_t ...> &to, [[maybe_unused]] const hud::compressed_tuple<u_types_t ...> &from) noexcept
275- {
276- static_assert (hud::tuple_size_v<hud::compressed_tuple<types_t ...>> == hud::tuple_size_v<hud::compressed_tuple<u_types_t ...>>, " Assigning tuples of different size is not supported" );
277- if constexpr (count > 0u )
278- {
279- constexpr const usize idx = tuple_size_v<hud::compressed_tuple<types_t ...>> - count;
280- hud::get<idx>(to) = hud::get<idx>(from);
281- tuple_assign<count - 1u >()(to, from);
282- }
283- }
284-
285- /* *
286- * Assign a 2 compressed_tuple elements.
287- * @tparam types_t... List of types_t of the compressed_tuple to
288- * @tparam u_types_t... List of types_t of the compressed_tuple from
289- * @param to The assigned compressed_tuple
290- * @param from The compressed_tuple to assign
291- */
292- template <typename ... types_t , typename ... u_types_t >
293- constexpr void operator ()([[maybe_unused]] hud::compressed_tuple<types_t ...> &to, [[maybe_unused]] hud::compressed_tuple<u_types_t ...> &&from) noexcept
294- {
295- static_assert (hud::tuple_size_v<hud::compressed_tuple<types_t ...>> == hud::tuple_size_v<hud::compressed_tuple<u_types_t ...>>, " Assigning tuples of different size is not supported" );
296- if constexpr (count > 0 )
297- {
298- constexpr const usize idx = tuple_size_v<hud::compressed_tuple<types_t ...>> - count;
299- hud::get<idx>(to) = hud::get<idx>(hud::move (from));
300- tuple_assign<count - 1u >()(to, hud::move (from));
301- }
302- }
303- };
304-
305259 /* * Swap tuple1_t and tuple2_t element at the index if element is swappable. */
306260 template <usize type_index, typename tuple1_t , typename tuple2_t , bool = hud::is_swappable_v<hud::tuple_element_t <type_index, tuple1_t >, hud::tuple_element_t <type_index, tuple2_t >>>
307261 struct swap_element
@@ -752,7 +706,7 @@ namespace hud
752706 constexpr compressed_tuple &operator =(const compressed_tuple &other) noexcept
753707 requires (hud::conjunction_v<hud::is_copy_assignable<types_t >...>)
754708 {
755- details::compressed_tuple ::tuple_assign<sizeof ...(types_t )>()(*this , other);
709+ details::tuple ::tuple_assign<sizeof ...(types_t ), compressed_tuple, compressed_tuple >()(*this , other);
756710 return *this ;
757711 }
758712
@@ -767,7 +721,7 @@ namespace hud
767721 requires (hud::conjunction_v<hud::is_copy_assignable<types_t , u_types_t >...>)
768722 constexpr compressed_tuple &operator =(const compressed_tuple<u_types_t ...> &other) noexcept
769723 {
770- details::compressed_tuple ::tuple_assign<sizeof ...(types_t )>()(*this , other);
724+ details::tuple ::tuple_assign<sizeof ...(types_t ), compressed_tuple, compressed_tuple< u_types_t ...> >()(*this , other);
771725 return *this ;
772726 }
773727
@@ -781,7 +735,7 @@ namespace hud
781735 constexpr compressed_tuple &operator =(compressed_tuple &&other) noexcept
782736 requires (hud::conjunction_v<hud::is_move_assignable<types_t >...>)
783737 {
784- details::compressed_tuple ::tuple_assign<sizeof ...(types_t )>()(*this , hud::move (other));
738+ details::tuple ::tuple_assign<sizeof ...(types_t ), compressed_tuple, compressed_tuple >()(*this , hud::move (other));
785739 return *this ;
786740 }
787741
@@ -796,7 +750,7 @@ namespace hud
796750 requires (hud::conjunction_v<hud::is_move_assignable<types_t , u_types_t >...>)
797751 constexpr compressed_tuple &operator =(compressed_tuple<u_types_t ...> &&other) noexcept
798752 {
799- details::compressed_tuple ::tuple_assign<sizeof ...(types_t )>()(*this , hud::move (other));
753+ details::tuple ::tuple_assign<sizeof ...(types_t ), compressed_tuple, compressed_tuple< u_types_t ...> >()(*this , hud::move (other));
800754 return *this ;
801755 }
802756
@@ -897,7 +851,7 @@ namespace hud
897851 [[nodiscard]] HD_FORCEINLINE constexpr tuple_element_t <idx_to_reach, compressed_tuple<types_t ...>> &get (compressed_tuple<types_t ...> &t) noexcept
898852 {
899853 using type_t = tuple_element_t <idx_to_reach, compressed_tuple<types_t ...>>;
900- return static_cast <details::compressed_tuple::tuple_leaf_select<idx_to_reach, type_t >::type &>(t).element ();
854+ return static_cast <typename details::compressed_tuple::tuple_leaf_select<idx_to_reach, type_t >::type &>(t).element ();
901855 }
902856
903857 /* *
@@ -911,7 +865,7 @@ namespace hud
911865 [[nodiscard]] HD_FORCEINLINE constexpr const tuple_element_t <idx_to_reach, compressed_tuple<types_t ...>> &get (const compressed_tuple<types_t ...> &t) noexcept
912866 {
913867 using type_t = tuple_element_t <idx_to_reach, compressed_tuple<types_t ...>>;
914- return static_cast <const details::compressed_tuple::tuple_leaf_select<idx_to_reach, type_t >::type &>(t).element ();
868+ return static_cast <const typename details::compressed_tuple::tuple_leaf_select<idx_to_reach, type_t >::type &>(t).element ();
915869 }
916870
917871 /* *
@@ -925,7 +879,7 @@ namespace hud
925879 [[nodiscard]] HD_FORCEINLINE constexpr tuple_element_t <idx_to_reach, compressed_tuple<types_t ...>> &&get(compressed_tuple<types_t ...> &&t) noexcept
926880 {
927881 using type_t = tuple_element_t <idx_to_reach, compressed_tuple<types_t ...>>;
928- return hud::forward<type_t >(static_cast <details::compressed_tuple::tuple_leaf_select<idx_to_reach, type_t >::type &&>(t).element ());
882+ return hud::forward<type_t >(static_cast <typename details::compressed_tuple::tuple_leaf_select<idx_to_reach, type_t >::type &&>(t).element ());
929883 }
930884
931885 /* *
@@ -939,7 +893,7 @@ namespace hud
939893 [[nodiscard]] HD_FORCEINLINE constexpr const tuple_element_t <idx_to_reach, compressed_tuple<types_t ...>> &&get(const compressed_tuple<types_t ...> &&t) noexcept
940894 {
941895 using type_t = tuple_element_t <idx_to_reach, compressed_tuple<types_t ...>>;
942- return hud::forward<const type_t >(static_cast <const details::compressed_tuple::tuple_leaf_select<idx_to_reach, type_t >::type &&>(t).element ());
896+ return hud::forward<const type_t >(static_cast <const typename details::compressed_tuple::tuple_leaf_select<idx_to_reach, type_t >::type &&>(t).element ());
943897 }
944898
945899 /* *
0 commit comments