|
8847 | 8847 | \pnum |
8848 | 8848 | \throws |
8849 | 8849 | \tcode{length_error} if any of \tcode{x}'s active blocks |
8850 | | -are not within the bounds of \exposid{current-limits}. |
| 8850 | +are not within the bounds of \exposid{current-limits}, |
| 8851 | +as well as any exceptions thrown by the allocator. |
8851 | 8852 |
|
8852 | 8853 | \pnum |
8853 | 8854 | \complexity |
|
10651 | 10652 | \tcode{*this}. |
10652 | 10653 | \end{itemdescr} |
10653 | 10654 |
|
| 10655 | +\indexlibrarymember{operator bool}{vector<bool>::reference}% |
| 10656 | +\begin{itemdecl} |
| 10657 | +constexpr reference::operator bool() const noexcept; |
| 10658 | +\end{itemdecl} |
| 10659 | + |
| 10660 | +\begin{itemdescr} |
| 10661 | +\pnum |
| 10662 | +\returns |
| 10663 | +\tcode{true} if the value of the bit referred to by \tcode{*this} is one, |
| 10664 | +\tcode{false} otherwise. |
| 10665 | +\end{itemdescr} |
| 10666 | + |
10654 | 10667 | \indexlibrarymember{flip}{vector<bool>::reference}% |
10655 | 10668 | \begin{itemdecl} |
10656 | 10669 | constexpr void reference::flip() noexcept; |
|
19494 | 19507 | \effects |
19495 | 19508 | Adds elements to \exposid{c} as if by: |
19496 | 19509 | \begin{codeblock} |
19497 | | -ranges::for_each(rg, [&](auto&& e) { |
19498 | | - @\exposid{c}@.insert(@\exposid{c}@.end(), std::forward<decltype(e)>(e)); |
| 19510 | +ranges::for_each(rg, [&](value_type e) { |
| 19511 | + @\exposid{c}@.insert(@\exposid{c}@.end(), std::move(e)); |
19499 | 19512 | }); |
19500 | 19513 | \end{codeblock} |
19501 | 19514 | Then, |
|
20182 | 20195 | \effects |
20183 | 20196 | Adds elements to \exposid{c} as if by: |
20184 | 20197 | \begin{codeblock} |
20185 | | -ranges::for_each(rg, [&](auto&& e) { |
20186 | | - @\exposid{c}@.insert(@\exposid{c}@.end(), std::forward<decltype(e)>(e)); |
| 20198 | +ranges::for_each(rg, [&](value_type e) { |
| 20199 | + @\exposid{c}@.insert(@\exposid{c}@.end(), std::move(e)); |
20187 | 20200 | }); |
20188 | 20201 | \end{codeblock} |
20189 | 20202 | Then, sorts the range of newly inserted elements with respect to \exposid{compare}, |
|
20392 | 20405 | concept @\defexposconcept{integral-constant-like}@ = // \expos |
20393 | 20406 | is_integral_v<remove_cvref_t<decltype(T::value)>> && |
20394 | 20407 | !is_same_v<bool, remove_cvref_t<decltype(T::value)>> && |
20395 | | - @\libconcept{convertible_to}@<T, decltype(T::value)> && |
20396 | | - @\libconcept{equality_comparable_with}@<T, decltype(T::value)> && |
20397 | | - bool_constant<T() == T::value>::value && |
20398 | | - bool_constant<static_cast<decltype(T::value)>(T()) == T::value>::value; |
| 20408 | + @\exposconcept{constexpr-wrapper-like}@<T>; |
20399 | 20409 |
|
20400 | 20410 | template<class T> |
20401 | 20411 | constexpr size_t @\defexposconcept{maybe-static-ext}@ = dynamic_extent; // \expos |
@@ -21289,12 +21299,12 @@ |
21289 | 21299 | inline constexpr full_extent_t full_extent{}; |
21290 | 21300 |
|
21291 | 21301 | template<class IndexType, size_t... Extents, class... SliceSpecifiers> |
21292 | | - constexpr auto submdspan_extents(const extents<IndexType, Extents...>&, SliceSpecifiers...); |
| 21302 | + constexpr auto subextents(const extents<IndexType, Extents...>&, SliceSpecifiers...); |
21293 | 21303 |
|
21294 | 21304 | // \ref{mdspan.sub.canonical}, \tcode{submdspan} slice canonicalization |
21295 | 21305 | template<class IndexType, size_t... Extents, class... Slices> |
21296 | | - constexpr auto submdspan_canonicalize_slices(const extents<IndexType, Extents...>& src, |
21297 | | - Slices... slices); |
| 21306 | + constexpr auto canonical_slices(const extents<IndexType, Extents...>& src, |
| 21307 | + Slices... slices); |
21298 | 21308 |
|
21299 | 21309 | // \ref{mdspan.sub.sub}, \tcode{submdspan} function template |
21300 | 21310 | template<class ElementType, class Extents, class LayoutPolicy, |
|
25033 | 25043 | typename MappingType::layout_type>; |
25034 | 25044 |
|
25035 | 25045 | template<class MappingType, class AccessorType> |
25036 | | - mdspan(const typename AccessorType::data_handle_type&, const MappingType&, |
| 25046 | + mdspan(typename AccessorType::data_handle_type, const MappingType&, |
25037 | 25047 | const AccessorType&) |
25038 | 25048 | -> mdspan<typename AccessorType::element_type, typename MappingType::extents_type, |
25039 | 25049 | typename MappingType::layout_type, AccessorType>; |
@@ -25846,11 +25856,12 @@ |
25846 | 25856 |
|
25847 | 25857 | \rSec4[mdspan.sub.canonical]{\tcode{submdspan} slice canonicalization} |
25848 | 25858 |
|
25849 | | -\indexlibraryglobal{submdspan_canonicalize_slices}% |
| 25859 | +%FIXME: "Slices" is used instead of "SliceSpecifiers" in the synopsis declaration. |
| 25860 | +\indexlibraryglobal{canonical_slices}% |
25850 | 25861 | \begin{itemdecl} |
25851 | 25862 | template<class IndexType, size_t... Extents, class... SliceSpecifiers> |
25852 | | - constexpr auto submdspan_canonicalize_slices(const extents<IndexType, Extents...>& src, |
25853 | | - SliceSpecifiers... slices); |
| 25863 | + constexpr auto canonical_slices(const extents<IndexType, Extents...>& src, |
| 25864 | + SliceSpecifiers... slices); |
25854 | 25865 | \end{itemdecl} |
25855 | 25866 |
|
25856 | 25867 | \begin{itemdescr} |
@@ -25882,20 +25893,20 @@ |
25882 | 25893 | \tcode{make_tuple(\exposid{canonical-slice}<IndexType>(slices)...)}. |
25883 | 25894 | \end{itemdescr} |
25884 | 25895 |
|
25885 | | -\rSec4[mdspan.sub.extents]{\tcode{submdspan_extents} function} |
| 25896 | +\rSec4[mdspan.sub.extents]{\tcode{subextents} function} |
25886 | 25897 |
|
25887 | | -\indexlibraryglobal{submdspan_extents}% |
| 25898 | +\indexlibraryglobal{subextents}% |
25888 | 25899 | \begin{itemdecl} |
25889 | 25900 | template<class IndexType, size_t... Extents, class... SliceSpecifiers> |
25890 | | - constexpr auto submdspan_extents(const extents<IndexType, Extents...>& src, |
25891 | | - SliceSpecifiers... raw_slices); |
| 25901 | + constexpr auto subextents(const extents<IndexType, Extents...>& src, |
| 25902 | + SliceSpecifiers... raw_slices); |
25892 | 25903 | \end{itemdecl} |
25893 | 25904 |
|
25894 | 25905 | \begin{itemdescr} |
25895 | 25906 | \pnum |
25896 | 25907 | Let \tcode{slices} be the pack introduced by the following declaration: |
25897 | 25908 | \begin{codeblock} |
25898 | | -auto [...slices] = submdspan_canonicalize_slices(src, raw_slices...); |
| 25909 | +auto [...slices] = canonical_slices(src, raw_slices...); |
25899 | 25910 | \end{codeblock} |
25900 | 25911 |
|
25901 | 25912 | \pnum |
|
26048 | 26059 | An object \tcode{smr} of type \tcode{SMR} such that |
26049 | 26060 | \begin{itemize} |
26050 | 26061 | \item |
26051 | | - \tcode{smr.mapping.extents() == submdspan_extents(m.extents(), valid_slices...)} |
| 26062 | + \tcode{smr.mapping.extents() == subextents(m.extents(), valid_slices...)} |
26052 | 26063 | is \tcode{true};\newline and |
26053 | 26064 | \item |
26054 | 26065 | for each integer pack \tcode{i} |
|
26121 | 26132 |
|
26122 | 26133 | \pnum |
26123 | 26134 | Let \tcode{sub_ext} be |
26124 | | -the result of \tcode{submdspan_extents(extents(), slices...)} and |
| 26135 | +the result of \tcode{subextents(extents(), slices...)} and |
26125 | 26136 | let \tcode{SubExtents} be \tcode{decl\-type(sub_ext)}. |
26126 | 26137 |
|
26127 | 26138 | \pnum |
|
26502 | 26513 | \pnum |
26503 | 26514 | Let \tcode{slices} be the pack introduced by the following declaration: |
26504 | 26515 | \begin{codeblock} |
26505 | | -auto [...slices] = submdspan_canonicalize_slices(src, raw_slices...); |
| 26516 | +auto [...slices] = canonical_slices(src, raw_slices...); |
26506 | 26517 | \end{codeblock} |
26507 | 26518 |
|
26508 | 26519 | \pnum |
|
0 commit comments