15692
15692
\end{itemdescr}
15693
15693
15694
15694
\begin{itemdecl}
15695
- m.is_contiguous ()
15695
+ m.is_exhaustive ()
15696
15696
\end{itemdecl}
15697
15697
15698
15698
\begin{itemdescr}
15708
15708
\begin{note}
15709
15709
A mapping can return \tcode{false} even if the condition is met.
15710
15710
For certain layouts, it is possibly not feasible to determine efficiently
15711
- whether the layout is contiguous .
15711
+ whether the layout is exhaustive .
15712
15712
\end{note}
15713
15713
\end{itemdescr}
15714
15714
15779
15779
\end{itemdescr}
15780
15780
15781
15781
\begin{itemdecl}
15782
- M::is_always_contiguous ()
15782
+ M::is_always_exhaustive ()
15783
15783
\end{itemdecl}
15784
15784
15785
15785
\begin{itemdescr}
@@ -15789,12 +15789,12 @@
15789
15789
15790
15790
\pnum
15791
15791
\returns
15792
- \tcode{true} only if \tcode{m.is_contiguous ()} is \tcode{true}
15792
+ \tcode{true} only if \tcode{m.is_exhaustive ()} is \tcode{true}
15793
15793
for all possible objects \tcode{m} of type \tcode{M}.
15794
15794
\begin{note}
15795
15795
A mapping can return \tcode{false} even if the above condition is met.
15796
15796
For certain layout mappings, it is possibly not feasible to determine
15797
- whether every instance is contiguous .
15797
+ whether every instance is exhaustive .
15798
15798
\end{note}
15799
15799
\end{itemdescr}
15800
15800
@@ -15897,11 +15897,11 @@
15897
15897
constexpr index_type operator()(Indices...) const noexcept;
15898
15898
15899
15899
static constexpr bool is_always_unique() noexcept { return true; }
15900
- static constexpr bool is_always_contiguous () noexcept { return true; }
15900
+ static constexpr bool is_always_exhaustive () noexcept { return true; }
15901
15901
static constexpr bool is_always_strided() noexcept { return true; }
15902
15902
15903
15903
static constexpr bool is_unique() noexcept { return true; }
15904
- static constexpr bool is_contiguous () noexcept { return true; }
15904
+ static constexpr bool is_exhaustive () noexcept { return true; }
15905
15905
static constexpr bool is_strided() noexcept { return true; }
15906
15906
15907
15907
constexpr index_type stride(rank_type) const noexcept;
@@ -16149,11 +16149,11 @@
16149
16149
constexpr index_type operator()(Indices...) const noexcept;
16150
16150
16151
16151
static constexpr bool is_always_unique() noexcept { return true; }
16152
- static constexpr bool is_always_contiguous () noexcept { return true; }
16152
+ static constexpr bool is_always_exhaustive () noexcept { return true; }
16153
16153
static constexpr bool is_always_strided() noexcept { return true; }
16154
16154
16155
16155
static constexpr bool is_unique() noexcept { return true; }
16156
- static constexpr bool is_contiguous () noexcept { return true; }
16156
+ static constexpr bool is_exhaustive () noexcept { return true; }
16157
16157
static constexpr bool is_strided() noexcept { return true; }
16158
16158
16159
16159
constexpr index_type stride(rank_type) const noexcept;
@@ -16402,11 +16402,11 @@
16402
16402
constexpr index_type operator()(Indices...) const noexcept;
16403
16403
16404
16404
static constexpr bool is_always_unique() noexcept { return true; }
16405
- static constexpr bool is_always_contiguous () noexcept { return false; }
16405
+ static constexpr bool is_always_exhaustive () noexcept { return false; }
16406
16406
static constexpr bool is_always_strided() noexcept { return true; }
16407
16407
16408
16408
static constexpr bool is_unique() noexcept { return true; }
16409
- constexpr bool is_contiguous () const noexcept;
16409
+ constexpr bool is_exhaustive () const noexcept;
16410
16410
static constexpr bool is_strided() noexcept { return true; }
16411
16411
16412
16412
constexpr index_type stride(rank_type i) const noexcept { return @\exposid{strides_}@[i]; }
@@ -16474,17 +16474,17 @@
16474
16474
concept @\defexposconcept{layout-mapping-alike}@ = requires { // \expos
16475
16475
requires @\exposid{is-extents}@<typename M::extents_type>;
16476
16476
{ M::is_always_strided() } -> same_as<bool>;
16477
- { M::is_always_contiguous () } -> same_as<bool>;
16477
+ { M::is_always_exhaustive () } -> same_as<bool>;
16478
16478
{ M::is_always_unique() } -> same_as<bool>;
16479
16479
bool_constant<M::is_always_strided()>::value;
16480
- bool_constant<M::is_always_contiguous ()>::value;
16480
+ bool_constant<M::is_always_exhaustive ()>::value;
16481
16481
bool_constant<M::is_always_unique()>::value;
16482
16482
};
16483
16483
\end{codeblock}
16484
16484
\begin{note}
16485
16485
This concept checks that the functions
16486
16486
\tcode{M::is_always_strided()},
16487
- \tcode{M::is_always_contiguous ()}, and
16487
+ \tcode{M::is_always_exhaustive ()}, and
16488
16488
\tcode{M::is_always_unique()} exist,
16489
16489
are constant expressions, and
16490
16490
have a return type of \tcode{bool}.
16642
16642
\end{codeblock}
16643
16643
\end{itemdescr}
16644
16644
16645
- \indexlibrarymember{is_contiguous }{layout_stride::mapping}%
16645
+ \indexlibrarymember{is_exhaustive }{layout_stride::mapping}%
16646
16646
\begin{itemdecl}
16647
- constexpr bool is_contiguous () const noexcept;
16647
+ constexpr bool is_exhaustive () const noexcept;
16648
16648
\end{itemdecl}
16649
16649
16650
16650
\begin{itemdescr}
16720
16720
\item
16721
16721
\tcode{a} denotes a value of type \tcode{A} or \tcode{const A}.
16722
16722
\item
16723
- \tcode{p} denotes a value of type \tcode{A::pointer } or \tcode{const A::pointer }.
16723
+ \tcode{p} denotes a value of type \tcode{A::data_handle_type } or \tcode{const A::data_handle_type }.
16724
16724
\begin{note}
16725
- The type \tcode{A::pointer } need not be dereferenceable.
16725
+ The type \tcode{A::data_handle_type } need not be dereferenceable.
16726
16726
\end{note}
16727
16727
\item
16728
16728
\tcode{n}, \tcode{i}, and \tcode{j} each denote values of type \tcode{size_t}.
@@ -16757,18 +16757,18 @@
16757
16757
\end{itemdescr}
16758
16758
16759
16759
\begin{itemdecl}
16760
- typename A::pointer
16760
+ typename A::data_handle_type
16761
16761
\end{itemdecl}
16762
16762
16763
16763
\begin{itemdescr}
16764
16764
\pnum
16765
16765
\result
16766
16766
A type that models \libconcept{copyable}, and
16767
16767
for which \tcode{is_nothrow_move_constructible_v<A::poin\-ter>} is \tcode{true},
16768
- \tcode{is_nothrow_move_assignable_v<A::pointer >} is \tcode{true}, and
16769
- \tcode{is_nothrow_swappable_v<A::pointer >} is \tcode{true}.
16768
+ \tcode{is_nothrow_move_assignable_v<A::data_handle_type >} is \tcode{true}, and
16769
+ \tcode{is_nothrow_swappable_v<A::data_handle_type >} is \tcode{true}.
16770
16770
\begin{note}
16771
- The type of \tcode{pointer } need not be \tcode{element_type*}.
16771
+ The type of \tcode{data_handle_type } need not be \tcode{element_type*}.
16772
16772
\end{note}
16773
16773
\end{itemdescr}
16774
16774
16836
16836
\begin{itemdescr}
16837
16837
\pnum
16838
16838
\result
16839
- \tcode{A::offset_policy::pointer }
16839
+ \tcode{A::offset_policy::data_handle_type }
16840
16840
16841
16841
\pnum
16842
16842
\returns
@@ -16868,13 +16868,13 @@
16868
16868
using offset_policy = default_accessor;
16869
16869
using element_type = ElementType;
16870
16870
using reference = ElementType&;
16871
- using pointer = ElementType*;
16871
+ using data_handle_type = ElementType*;
16872
16872
16873
16873
constexpr default_accessor() noexcept = default;
16874
16874
template<class OtherElementType>
16875
16875
constexpr default_accessor(default_accessor<OtherElementType>) noexcept;
16876
- constexpr reference access(pointer p, size_t i) const noexcept;
16877
- constexpr pointer offset(pointer p, size_t i) const noexcept;
16876
+ constexpr reference access(data_handle_type p, size_t i) const noexcept;
16877
+ constexpr data_handle_type offset(data_handle_type p, size_t i) const noexcept;
16878
16878
};
16879
16879
}
16880
16880
\end{codeblock}
16892
16892
16893
16893
\pnum
16894
16894
$[0, n)$ is an accessible range for
16895
- an object \tcode{p} of type \tcode{pointer } and
16895
+ an object \tcode{p} of type \tcode{data_handle_type } and
16896
16896
an object of type \tcode{default_accessor}
16897
16897
if and only if \range{p}{p + $n$} is a valid range.
16898
16898
16913
16913
16914
16914
\indexlibrarymember{access}{default_accessor}%
16915
16915
\begin{itemdecl}
16916
- constexpr reference access(pointer p, size_t i) const noexcept;
16916
+ constexpr reference access(data_handle_type p, size_t i) const noexcept;
16917
16917
\end{itemdecl}
16918
16918
16919
16919
\begin{itemdescr}
16924
16924
16925
16925
\indexlibrarymember{offset}{default_accessor}%
16926
16926
\begin{itemdecl}
16927
- constexpr pointer offset(pointer p, size_t i) const noexcept;
16927
+ constexpr data_handle_type offset(data_handle_type p, size_t i) const noexcept;
16928
16928
\end{itemdecl}
16929
16929
16930
16930
\begin{itemdescr}
16954
16954
using index_type = typename extents_type::index_type;
16955
16955
using size_type = typename extents_type::size_type;
16956
16956
using rank_type = typename extents_type::rank_type;
16957
- using pointer = typename accessor_type::pointer ;
16957
+ using data_handle_type = typename accessor_type::data_handle_type ;
16958
16958
using reference = typename accessor_type::reference;
16959
16959
16960
16960
static constexpr rank_type rank() noexcept { return extents_type::rank(); }
@@ -17001,21 +17001,21 @@
17001
17001
friend constexpr void swap(mdspan& x, mdspan& y) noexcept;
17002
17002
17003
17003
constexpr const extents_type& extents() const noexcept { return @\exposid{map_}@.extents(); }
17004
- constexpr const pointer& data () const noexcept { return @\exposid{ptr_}@; }
17004
+ constexpr const data_handle_type& data_handle () const noexcept { return @\exposid{ptr_}@; }
17005
17005
constexpr const mapping_type& mapping() const noexcept { return @\exposid{map_}@; }
17006
17006
constexpr const accessor_type& accessor() const noexcept { return @\exposid{acc_}@; }
17007
17007
17008
17008
static constexpr bool is_always_unique()
17009
17009
{ return mapping_type::is_always_unique(); }
17010
- static constexpr bool is_always_contiguous ()
17011
- { return mapping_type::is_always_contiguous (); }
17010
+ static constexpr bool is_always_exhaustive ()
17011
+ { return mapping_type::is_always_exhaustive (); }
17012
17012
static constexpr bool is_always_strided()
17013
17013
{ return mapping_type::is_always_strided(); }
17014
17014
17015
17015
constexpr bool is_unique() const
17016
17016
{ return @\exposid{map_}@.is_unique(); }
17017
- constexpr bool is_contiguous () const
17018
- { return @\exposid{map_}@.is_contiguous (); }
17017
+ constexpr bool is_exhaustive () const
17018
+ { return @\exposid{map_}@.is_exhaustive (); }
17019
17019
constexpr bool is_strided() const
17020
17020
{ return @\exposid{map_.}@is_strided(); }
17021
17021
constexpr index_type stride(rank_type r) const
17024
17024
private:
17025
17025
accessor_type @\exposid{acc_}@; // \expos
17026
17026
mapping_type @\exposid{map_}@; // \expos
17027
- pointer @\exposid{ptr_}@; // \expos
17027
+ data_handle_type @\exposid{ptr_}@; // \expos
17028
17028
};
17029
17029
17030
17030
template<class CArray>
17060
17060
typename MappingType::layout_type>;
17061
17061
17062
17062
template<class MappingType, class AccessorType>
17063
- mdspan(const typename AccessorType::pointer&, const MappingType&, const AccessorType&)
17063
+ mdspan(const typename AccessorType::data_handle_type&, const MappingType&,
17064
+ const AccessorType&)
17064
17065
-> mdspan<typename AccessorType::element_type, typename MappingType::extents_type,
17065
17066
typename MappingType::layout_type, AccessorType>;
17066
17067
}
17098
17099
17099
17100
\pnum
17100
17101
A specialization of \tcode{mdspan} is a trivially copyable type if
17101
- its \tcode{accessor_type}, \tcode{mapping_type}, and \tcode{pointer }
17102
+ its \tcode{accessor_type}, \tcode{mapping_type}, and \tcode{data_handle_type }
17102
17103
are trivially copyable types.
17103
17104
17104
17105
\rSec3[mdspan.mdspan.ctor]{Constructors}
17115
17116
\item
17116
17117
\tcode{rank_dynamic() > 0} is \tcode{true}.
17117
17118
\item
17118
- \tcode{is_default_constructible_v<pointer >} is \tcode{true}.
17119
+ \tcode{is_default_constructible_v<data_handle_type >} is \tcode{true}.
17119
17120
\item
17120
17121
\tcode{is_default_constructible_v<mapping_type>} is \tcode{true}.
17121
17122
\item
17226
17227
17227
17228
\indexlibraryctor{mdspan}%
17228
17229
\begin{itemdecl}
17229
- constexpr mdspan(pointer p, const extents_type& ext);
17230
+ constexpr mdspan(data_handle_type p, const extents_type& ext);
17230
17231
\end{itemdecl}
17231
17232
17232
17233
\begin{itemdescr}
17260
17261
17261
17262
\indexlibraryctor{mdspan}%
17262
17263
\begin{itemdecl}
17263
- constexpr mdspan(pointer p, const mapping_type& m);
17264
+ constexpr mdspan(data_handle_type p, const mapping_type& m);
17264
17265
\end{itemdecl}
17265
17266
17266
17267
\begin{itemdescr}
17288
17289
17289
17290
\indexlibraryctor{mdspan}%
17290
17291
\begin{itemdecl}
17291
- constexpr mdspan(pointer p, const mapping_type& m, const accessor_type& a);
17292
+ constexpr mdspan(data_handle_type p, const mapping_type& m, const accessor_type& a);
17292
17293
\end{itemdecl}
17293
17294
17294
17295
\begin{itemdescr}
17333
17334
\mandates
17334
17335
\begin{itemize}
17335
17336
\item
17336
- \tcode{is_constructible_v<pointer , const OtherAccessor::pointer \&>} is \tcode{true}, and
17337
+ \tcode{is_constructible_v<data_handle_type , const OtherAccessor::data_handle_type \&>} is\newline \tcode{true}, and
17337
17338
\item
17338
17339
\tcode{is_constructible_v<extents_type, OtherExtents>} is \tcode{true}.
17339
17340
\end{itemize}
0 commit comments