|
8064 | 8064 | allocator_type get_allocator() const noexcept; |
8065 | 8065 |
|
8066 | 8066 | // iterators |
8067 | | - iterator begin() noexcept; |
8068 | | - const_iterator begin() const noexcept; |
8069 | | - iterator end() noexcept; |
8070 | | - const_iterator end() const noexcept; |
8071 | | - reverse_iterator rbegin() noexcept; |
8072 | | - const_reverse_iterator rbegin() const noexcept; |
8073 | | - reverse_iterator rend() noexcept; |
8074 | | - const_reverse_iterator rend() const noexcept; |
8075 | | - const_iterator cbegin() const noexcept; |
8076 | | - const_iterator cend() const noexcept; |
8077 | | - const_reverse_iterator crbegin() const noexcept; |
8078 | | - const_reverse_iterator crend() const noexcept; |
| 8067 | + iterator begin() noexcept; |
| 8068 | + const_iterator begin() const noexcept; |
| 8069 | + iterator end() noexcept; |
| 8070 | + const_iterator end() const noexcept; |
| 8071 | + reverse_iterator rbegin() noexcept; |
| 8072 | + const_reverse_iterator rbegin() const noexcept; |
| 8073 | + reverse_iterator rend() noexcept; |
| 8074 | + const_reverse_iterator rend() const noexcept; |
| 8075 | + const_iterator cbegin() const noexcept; |
| 8076 | + const_iterator cend() const noexcept; |
| 8077 | + const_reverse_iterator crbegin() const noexcept; |
| 8078 | + const_reverse_iterator crend() const noexcept; |
8079 | 8079 |
|
8080 | 8080 | // \ref{hive.capacity}, capacity |
8081 | 8081 | bool empty() const noexcept; |
|
10489 | 10489 | using reverse_iterator = std::reverse_iterator<iterator>; |
10490 | 10490 | using const_reverse_iterator = std::reverse_iterator<const_iterator>; |
10491 | 10491 |
|
10492 | | - // bit reference |
10493 | | - class @\libmember{reference}{vector<bool>}@ { |
10494 | | - public: |
10495 | | - constexpr reference(const reference& x) noexcept; |
10496 | | - constexpr ~reference(); |
10497 | | - constexpr reference& operator=(bool x) noexcept; |
10498 | | - constexpr reference& operator=(const reference& x) noexcept; |
10499 | | - constexpr const reference& operator=(bool x) const noexcept; |
10500 | | - constexpr operator bool() const noexcept; |
10501 | | - constexpr void flip() noexcept; // flips the bit |
10502 | | - |
10503 | | - friend constexpr void swap(reference x, reference y) noexcept; |
10504 | | - friend constexpr void swap(reference x, bool& y) noexcept; |
10505 | | - friend constexpr void swap(bool& x, reference y) noexcept; |
10506 | | - }; |
| 10492 | + // \ref{vector.bool.reference}, bit reference |
| 10493 | + class reference; |
10507 | 10494 |
|
10508 | 10495 | // construct/copy/destroy |
10509 | 10496 | constexpr vector() noexcept(noexcept(Allocator())) : vector(Allocator()) { } |
@@ -10607,13 +10594,34 @@ |
10607 | 10594 | of \tcode{bool} values. A space-optimized representation of bits is |
10608 | 10595 | recommended instead. |
10609 | 10596 |
|
| 10597 | +\rSec3[vector.bool.reference]{Class \tcode{vector<bool>::reference}}% |
10610 | 10598 | \pnum |
10611 | 10599 | \tcode{reference} |
10612 | 10600 | is a class that simulates a reference to a single bit in the sequence. |
10613 | 10601 |
|
| 10602 | +\indexlibrarymember{reference}{vector<bool>}% |
| 10603 | +\begin{codeblock} |
| 10604 | +namespace std { |
| 10605 | + template<size_t N> class vector<bool>::reference { |
| 10606 | + public: |
| 10607 | + constexpr reference(const reference& x) noexcept; |
| 10608 | + constexpr ~reference(); |
| 10609 | + constexpr reference& operator=(bool x) noexcept; |
| 10610 | + constexpr reference& operator=(const reference& x) noexcept; |
| 10611 | + constexpr const reference& operator=(bool x) const noexcept; |
| 10612 | + constexpr operator bool() const noexcept; |
| 10613 | + constexpr void flip() noexcept; // flips the bit |
| 10614 | + |
| 10615 | + friend constexpr void swap(reference x, reference y) noexcept; |
| 10616 | + friend constexpr void swap(reference x, bool& y) noexcept; |
| 10617 | + friend constexpr void swap(bool& x, reference y) noexcept; |
| 10618 | + }; |
| 10619 | +} |
| 10620 | +\end{codeblock} |
| 10621 | + |
10614 | 10622 | \indexlibraryctor{vector<bool>::reference}% |
10615 | 10623 | \begin{itemdecl} |
10616 | | -constexpr reference::reference(const reference& x) noexcept; |
| 10624 | +constexpr reference(const reference& x) noexcept; |
10617 | 10625 | \end{itemdecl} |
10618 | 10626 |
|
10619 | 10627 | \begin{itemdescr} |
|
10624 | 10632 |
|
10625 | 10633 | \indexlibrarydtor{vector<bool>::reference}% |
10626 | 10634 | \begin{itemdecl} |
10627 | | -constexpr reference::~reference(); |
| 10635 | +constexpr ~reference(); |
10628 | 10636 | \end{itemdecl} |
10629 | 10637 |
|
10630 | 10638 | \begin{itemdescr} |
|
10635 | 10643 |
|
10636 | 10644 | \indexlibrarymember{operator=}{vector<bool>::reference}% |
10637 | 10645 | \begin{itemdecl} |
10638 | | -constexpr reference& reference::operator=(bool x) noexcept; |
10639 | | -constexpr reference& reference::operator=(const reference& x) noexcept; |
10640 | | -constexpr const reference& reference::operator=(bool x) const noexcept; |
| 10646 | +constexpr reference& operator=(bool x) noexcept; |
| 10647 | +constexpr reference& operator=(const reference& x) noexcept; |
| 10648 | +constexpr const reference& operator=(bool x) const noexcept; |
10641 | 10649 | \end{itemdecl} |
10642 | 10650 |
|
10643 | 10651 | \begin{itemdescr} |
|
10653 | 10661 |
|
10654 | 10662 | \indexlibrarymember{flip}{vector<bool>::reference}% |
10655 | 10663 | \begin{itemdecl} |
10656 | | -constexpr void reference::flip() noexcept; |
| 10664 | +constexpr void flip() noexcept; |
10657 | 10665 | \end{itemdecl} |
10658 | 10666 |
|
10659 | 10667 | \begin{itemdescr} |
|
10681 | 10689 | \end{codeblock} |
10682 | 10690 | \end{itemdescr} |
10683 | 10691 |
|
10684 | | - |
| 10692 | +\rSec3[vector.bool.members]{\tcode{vector<bool>} members} |
10685 | 10693 |
|
10686 | 10694 | \indexlibrarymember{flip}{vector<bool>}% |
10687 | 10695 | \begin{itemdecl} |
|
11525 | 11533 |
|
11526 | 11534 | template<class Key, class T, class Compare, class Allocator> |
11527 | 11535 | constexpr void swap(multimap<Key, T, Compare, Allocator>& x, |
11528 | | - multimap<Key, T, Compare, Allocator>& y) |
| 11536 | + multimap<Key, T, Compare, Allocator>& y) |
11529 | 11537 | noexcept(noexcept(x.swap(y))); |
11530 | 11538 |
|
11531 | 11539 | // \ref{multimap.erasure}, erasure for \tcode{multimap} |
|
26063 | 26071 | \tcode{j...[$\rho$]} is equal to the sum of |
26064 | 26072 | \begin{itemize} |
26065 | 26073 | \item |
26066 | | - the lower bound of the \tcode{submdspan} slice range of \tcode{valid_slices...[$\rho$]} |
| 26074 | + the lower bound of the submdspan slice range of \tcode{valid_slices...[$\rho$]} |
26067 | 26075 | for extent $\rho$ of \tcode{m.extents()}, and |
26068 | 26076 | \item |
26069 | 26077 | zero if the type of \tcode{valid_slices...[$\rho$]} is a collapsing slice type, |
|
0 commit comments