diff --git a/source/containers.tex b/source/containers.tex index 8a3e9e51ed..ece8bdea92 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -18228,6 +18228,20 @@ // constants inline constexpr size_t @\libglobal{dynamic_extent}@ = numeric_limits::max(); + template + concept @\defexposconcept{integral-constant-like}@ = // \expos + is_integral_v && + !is_same_v> && + @\libconcept{convertible_to}@ && + @\libconcept{equality_comparable_with}@ && + bool_constant::value && + bool_constant(T()) == T::value>::value; + + template + constexpr size_t @\defexposconcept{maybe-static-ext}@ = dynamic_extent; // \expos + template<@\exposconcept{integral-constant-like}@ T> + constexpr size_t @\exposconcept{maybe-static-ext}@ = {T::value}; + // \ref{views.span}, class template \tcode{span} template class span; // partially freestanding @@ -18343,7 +18357,8 @@ }; template - span(It, EndOrSize) -> span>>; + span(It, EndOrSize) -> span>, + @\exposconcept{maybe-static-ext}@>; template span(T (&)[N]) -> span; template @@ -18635,7 +18650,8 @@ \indexlibrary{\idxcode{span}!deduction guide}% \begin{itemdecl} template - span(It, EndOrSize) -> span>>; + span(It, EndOrSize) -> span>, + @\exposconcept{maybe-static-ext}@>; \end{itemdecl} \begin{itemdescr} @@ -19098,15 +19114,6 @@ const mdspan& src, SliceSpecifiers... slices) -> @\seebelow@; - template - concept @\defexposconcept{integral-constant-like}@ = // \expos - is_integral_v && - !is_same_v> && - @\libconcept{convertible_to}@ && - @\libconcept{equality_comparable_with}@ && - bool_constant::value && - bool_constant(T()) == T::value>::value; - template concept @\defexposconcept{index-pair-like}@ = // \expos @\exposconcept{pair-like}@ && @@ -19458,7 +19465,7 @@ \pnum \remarks -The deduced type is \tcode{dextents}. +The deduced type is \tcode{extents...>}. \end{itemdescr} \rSec4[mdspan.extents.obs]{Observers of the multidimensional index space} @@ -22549,7 +22556,7 @@ template requires ((is_convertible_v && ...) && sizeof...(Integrals) > 0) explicit mdspan(ElementType*, Integrals...) - -> mdspan>; + -> mdspan...>>; template mdspan(ElementType*, span)