diff --git a/stl/inc/mdspan b/stl/inc/mdspan index ba2207ff253..669ba378eca 100644 --- a/stl/inc/mdspan +++ b/stl/inc/mdspan @@ -117,6 +117,7 @@ struct _Mdspan_extent_type<_IndexType, 0> { } }; +_EXPORT_STD template class extents : private _Mdspan_extent_type<_IndexType, ((_Extents == dynamic_extent) + ... + 0), _Extents...> { public: @@ -186,14 +187,14 @@ public: && is_nothrow_constructible_v && (_Size == rank_dynamic() || _Size == rank()) constexpr explicit(_Size != rank_dynamic()) extents(span<_OtherIndexType, _Size> _Exts) noexcept - : _Mybase{_Exts, _STD make_index_sequence{}} {} + : _Mybase{_Exts, make_index_sequence{}} {} template requires is_convertible_v && is_nothrow_constructible_v && (_Size == rank_dynamic() || _Size == rank()) constexpr explicit(_Size != rank_dynamic()) extents(const array<_OtherIndexType, _Size>& _Exts) noexcept - : _Mybase{span{_Exts}, _STD make_index_sequence{}} {} + : _Mybase{span{_Exts}, make_index_sequence{}} {} template _NODISCARD_FRIEND constexpr bool operator==( @@ -231,6 +232,7 @@ public: } }; +_EXPORT_STD template using dextents = decltype([](const _IndexType2, const index_sequence<_Seq...>) constexpr { @@ -267,16 +269,19 @@ template inline constexpr bool _Is_mapping_of = is_same_v, _Mapping>; +_EXPORT_STD struct layout_left { template class mapping; }; +_EXPORT_STD struct layout_right { template class mapping; }; +_EXPORT_STD struct layout_stride { template class mapping; @@ -494,10 +499,6 @@ public: private: _Extents _Myext{}; - static constexpr size_t _Multiply(size_t _X, size_t _Y) { - return _X * _Y; - } - template constexpr index_type _Index_impl(_IndexType... _Idx, index_sequence<_Seq...>) const noexcept { index_type _Result = 0; @@ -685,6 +686,7 @@ private: } }; +_EXPORT_STD template struct default_accessor { using offset_policy = default_accessor; @@ -709,6 +711,7 @@ struct default_accessor { } }; +_EXPORT_STD template > class mdspan {