@@ -48,18 +48,17 @@ struct product_type_base<::std::index_sequence<I...>, T...>
4848 }
4949 template <::std::size_t J>
5050 auto get () const & -> decltype(auto ) {
51- return this ->element_get <J>(:: std::move ( *this ) );
51+ return this ->element_get <J>(*this );
5252 }
5353
5454 template <::std::size_t J, typename Allocator, typename Self>
5555 static auto make_element (Allocator&& alloc, Self&& self) -> decltype(auto ) {
56- using type = ::std::remove_cvref_t <decltype (std::forward<Self>(self).template element_get <J>(
57- std::forward<Self>(self)))>;
56+ using type = ::std::remove_cvref_t <decltype (product_type_base::element_get<J>(std::forward<Self>(self)))>;
5857 if constexpr (::std::uses_allocator_v<type, Allocator>)
59- return ::std::make_obj_using_allocator<type>(
60- alloc, std::forward<Self>(self). template element_get <J>(std::forward<Self>(self)));
58+ return ::std::make_obj_using_allocator<type>(alloc,
59+ product_type_base:: element_get<J>(std::forward<Self>(self)));
6160 else
62- return std::forward<Self>(self). template element_get <J>(std::forward<Self>(self));
61+ return product_type_base:: element_get<J>(std::forward<Self>(self));
6362 }
6463
6564 auto operator ==(const product_type_base&) const -> bool = default ;
@@ -69,8 +68,7 @@ template <typename... T>
6968struct product_type : ::beman::execution26::detail::product_type_base<::std::index_sequence_for<T...>, T...> {
7069 template <typename Allocator, typename Product, std::size_t ... I>
7170 static auto make_from (Allocator&& allocator, Product&& product, std::index_sequence<I...>) -> product_type {
72- return {
73- ::std::forward<Product>(product).template make_element <I>(allocator, ::std::forward<Product>(product))...};
71+ return {product_type::template make_element<I>(allocator, ::std::forward<Product>(product))...};
7472 }
7573
7674 template <typename Allocator, typename Product>
0 commit comments