@@ -10250,23 +10250,19 @@
10250
10250
\begin {codeblock }
10251
10251
namespace std {
10252
10252
// constants
10253
- inline constexpr ptrdiff_t dynamic_extent = -1 ;
10253
+ inline constexpr size_t dynamic_extent = numeric_limits<size_t>::max() ;
10254
10254
10255
10255
// \ref {views.span }, class template span
10256
- template<class ElementType, ptrdiff_t Extent = dynamic_extent>
10256
+ template<class ElementType, size_t Extent = dynamic_extent>
10257
10257
class span;
10258
10258
10259
10259
// \ref {span.objectrep }, views of object representation
10260
- template<class ElementType, ptrdiff_t Extent>
10261
- span<const byte,
10262
- Extent == dynamic_extent ? dynamic_extent
10263
- : static_cast<ptrdiff_t>(sizeof(ElementType)) * Extent>
10260
+ template<class ElementType, size_t Extent>
10261
+ span<const byte, Extent == dynamic_extent ? dynamic_extent : sizeof(ElementType) * Extent>
10264
10262
as_bytes(span<ElementType, Extent> s) noexcept;
10265
10263
10266
- template<class ElementType, ptrdiff_t Extent>
10267
- span<byte,
10268
- Extent == dynamic_extent ? dynamic_extent
10269
- : static_cast<ptrdiff_t>(sizeof(ElementType)) * Extent>
10264
+ template<class ElementType, size_t Extent>
10265
+ span<byte, Extent == dynamic_extent ? dynamic_extent : sizeof(ElementType) * Extent>
10270
10266
as_writable_bytes(span<ElementType, Extent> s) noexcept;
10271
10267
}
10272
10268
\end {codeblock }
@@ -10297,13 +10293,13 @@
10297
10293
\indexlibrary {\idxcode {span}}%
10298
10294
\begin {codeblock }
10299
10295
namespace std {
10300
- template<class ElementType, ptrdiff_t Extent = dynamic_extent>
10296
+ template<class ElementType, size_t Extent = dynamic_extent>
10301
10297
class span {
10302
10298
public:
10303
10299
// constants and types
10304
10300
using element_type = ElementType;
10305
10301
using value_type = remove_cv_t<ElementType>;
10306
- using index_type = ptrdiff_t ;
10302
+ using index_type = size_t ;
10307
10303
using difference_type = ptrdiff_t;
10308
10304
using pointer = element_type*;
10309
10305
using reference = element_type&;
@@ -10328,19 +10324,19 @@
10328
10324
template<class Container>
10329
10325
constexpr span(const Container& cont);
10330
10326
constexpr span(const span& other) noexcept = default;
10331
- template<class OtherElementType, ptrdiff_t OtherExtent>
10327
+ template<class OtherElementType, size_t OtherExtent>
10332
10328
constexpr span(const span<OtherElementType, OtherExtent>& s) noexcept;
10333
10329
10334
10330
~span() noexcept = default;
10335
10331
10336
10332
constexpr span& operator=(const span& other) noexcept = default;
10337
10333
10338
10334
// \ref {span.sub }, subviews
10339
- template<ptrdiff_t Count>
10335
+ template<size_t Count>
10340
10336
constexpr span<element_type, Count> first() const;
10341
- template<ptrdiff_t Count>
10337
+ template<size_t Count>
10342
10338
constexpr span<element_type, Count> last() const;
10343
- template<ptrdiff_t Offset, ptrdiff_t Count = dynamic_extent>
10339
+ template<size_t Offset, size_t Count = dynamic_extent>
10344
10340
constexpr span<element_type, @\seebelow@ > subspan() const;
10345
10341
10346
10342
constexpr span<element_type, dynamic_extent> first(index_type count) const;
10393
10389
\tcode {ElementType} is required to be
10394
10390
a complete object type that is not an abstract class type.
10395
10391
10396
- \pnum
10397
- If \tcode {Extent} is negative and not equal to \tcode {dynamic_extent},
10398
- the program is ill-formed.
10399
-
10400
10392
\rSec 3[span.cons]{Constructors, copy, and assignment}
10401
10393
10402
10394
\indexlibrary {\idxcode {span}!constructor}%
10533
10525
10534
10526
\indexlibrary {\idxcode {span}!constructor}%
10535
10527
\begin {itemdecl }
10536
- template<class OtherElementType, ptrdiff_t OtherExtent>
10528
+ template<class OtherElementType, size_t OtherExtent>
10537
10529
constexpr span(const span<OtherElementType, OtherExtent>& s) noexcept;
10538
10530
\end {itemdecl }
10539
10531
\begin {itemdescr }
@@ -10569,12 +10561,12 @@
10569
10561
10570
10562
\indexlibrarymember {span}{first}%
10571
10563
\begin {itemdecl }
10572
- template<ptrdiff_t Count> constexpr span<element_type, Count> first() const;
10564
+ template<size_t Count> constexpr span<element_type, Count> first() const;
10573
10565
\end {itemdecl }
10574
10566
\begin {itemdescr }
10575
10567
\pnum
10576
10568
\requires
10577
- \tcode {0 <= Count \&\& Count <= size()}.
10569
+ \tcode {Count <= size()}.
10578
10570
10579
10571
\pnum
10580
10572
\effects
@@ -10583,12 +10575,12 @@
10583
10575
10584
10576
\indexlibrarymember {span}{last}%
10585
10577
\begin {itemdecl }
10586
- template<ptrdiff_t Count> constexpr span<element_type, Count> last() const;
10578
+ template<size_t Count> constexpr span<element_type, Count> last() const;
10587
10579
\end {itemdecl }
10588
10580
\begin {itemdescr }
10589
10581
\pnum
10590
10582
\requires
10591
- \tcode {0 <= Count \&\& Count <= size()}.
10583
+ \tcode {Count <= size()}.
10592
10584
10593
10585
\pnum
10594
10586
\effects
@@ -10597,15 +10589,14 @@
10597
10589
10598
10590
\indexlibrarymember {span}{subspan}%
10599
10591
\begin {itemdecl }
10600
- template<ptrdiff_t Offset, ptrdiff_t Count = dynamic_extent>
10592
+ template<size_t Offset, size_t Count = dynamic_extent>
10601
10593
constexpr span<element_type, @\seebelow@ > subspan() const;
10602
10594
\end {itemdecl }
10603
10595
\begin {itemdescr }
10604
10596
\pnum
10605
10597
\requires
10606
10598
\begin {codeblock }
10607
- (0 <= Offset && Offset <= size())
10608
- && (Count == dynamic_extent || Count >= 0 && Offset + Count <= size())
10599
+ Offset <= size() && (Count == dynamic_extent || Offset + Count <= size())
10609
10600
\end {codeblock }
10610
10601
10611
10602
\pnum
10633
10624
\begin {itemdescr }
10634
10625
\pnum
10635
10626
\requires
10636
- \tcode {0 <= count \&\& count <= size()}.
10627
+ \tcode {count <= size()}.
10637
10628
10638
10629
\pnum
10639
10630
\effects
10647
10638
\begin {itemdescr }
10648
10639
\pnum
10649
10640
\requires
10650
- \tcode {0 <= count 0 \&\& count <= size()}.
10641
+ \tcode {count <= size()}.
10651
10642
10652
10643
\pnum
10653
10644
\effects
10663
10654
\pnum
10664
10655
\requires
10665
10656
\begin {codeblock }
10666
- (0 <= offset && offset <= size())
10667
- && (count == dynamic_extent || count >= 0 && offset + count <= size())
10657
+ offset <= size() && (count == dynamic_extent || offset + count <= size())
10668
10658
\end {codeblock }
10669
10659
10670
10660
\pnum
10718
10708
\begin {itemdescr }
10719
10709
\pnum
10720
10710
\requires
10721
- \tcode {0 <= idx \&\& idx < size()}.
10711
+ \tcode {idx < size()}.
10722
10712
10723
10713
\pnum
10724
10714
\effects
10826
10816
10827
10817
\indexlibrary {\idxcode {as_bytes}}%
10828
10818
\begin {itemdecl }
10829
- template<class ElementType, ptrdiff_t Extent>
10830
- span<const byte,
10831
- Extent == dynamic_extent ? dynamic_extent
10832
- : static_cast<ptrdiff_t>(sizeof(ElementType)) * Extent>
10819
+ template<class ElementType, size_t Extent>
10820
+ span<const byte, Extent == dynamic_extent ? dynamic_extent : sizeof(ElementType) * Extent>
10833
10821
as_bytes(span<ElementType, Extent> s) noexcept;
10834
10822
\end {itemdecl }
10835
10823
\begin {itemdescr }
10840
10828
10841
10829
\indexlibrary {\idxcode {as_writable_bytes}}%
10842
10830
\begin {itemdecl }
10843
- template<class ElementType, ptrdiff_t Extent>
10844
- span<byte,
10845
- Extent == dynamic_extent ? dynamic_extent
10846
- : static_cast<ptrdiff_t>(sizeof(ElementType)) * Extent>
10831
+ template<class ElementType, size_t Extent>
10832
+ span<byte, Extent == dynamic_extent ? dynamic_extent : sizeof(ElementType) * Extent>
10847
10833
as_writable_bytes(span<ElementType, Extent> s) noexcept;
10848
10834
\end {itemdecl }
10849
10835
\begin {itemdescr }
0 commit comments