Skip to content

Commit aa2432e

Browse files
committed
[vector.bool.pspc] Break out into its own subclause
This change is consistent with specification of nested classes elsewhere in the standard, and allows better use of qualified names in the declaration of member functions in their own specification.
1 parent 299f168 commit aa2432e

File tree

1 file changed

+44
-36
lines changed

1 file changed

+44
-36
lines changed

source/containers.tex

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8064,18 +8064,18 @@
80648064
allocator_type get_allocator() const noexcept;
80658065

80668066
// 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;
80798079

80808080
// \ref{hive.capacity}, capacity
80818081
bool empty() const noexcept;
@@ -10489,21 +10489,8 @@
1048910489
using reverse_iterator = std::reverse_iterator<iterator>;
1049010490
using const_reverse_iterator = std::reverse_iterator<const_iterator>;
1049110491

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;
1050710494

1050810495
// construct/copy/destroy
1050910496
constexpr vector() noexcept(noexcept(Allocator())) : vector(Allocator()) { }
@@ -10607,13 +10594,34 @@
1060710594
of \tcode{bool} values. A space-optimized representation of bits is
1060810595
recommended instead.
1060910596

10597+
\rSec3[vector.bool.reference]{Class \tcode{vector<bool>::reference}}%
1061010598
\pnum
1061110599
\tcode{reference}
1061210600
is a class that simulates a reference to a single bit in the sequence.
1061310601

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+
1061410622
\indexlibraryctor{vector<bool>::reference}%
1061510623
\begin{itemdecl}
10616-
constexpr reference::reference(const reference& x) noexcept;
10624+
constexpr reference(const reference& x) noexcept;
1061710625
\end{itemdecl}
1061810626

1061910627
\begin{itemdescr}
@@ -10624,7 +10632,7 @@
1062410632

1062510633
\indexlibrarydtor{vector<bool>::reference}%
1062610634
\begin{itemdecl}
10627-
constexpr reference::~reference();
10635+
constexpr ~reference();
1062810636
\end{itemdecl}
1062910637

1063010638
\begin{itemdescr}
@@ -10635,9 +10643,9 @@
1063510643

1063610644
\indexlibrarymember{operator=}{vector<bool>::reference}%
1063710645
\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;
1064110649
\end{itemdecl}
1064210650

1064310651
\begin{itemdescr}
@@ -10653,7 +10661,7 @@
1065310661

1065410662
\indexlibrarymember{flip}{vector<bool>::reference}%
1065510663
\begin{itemdecl}
10656-
constexpr void reference::flip() noexcept;
10664+
constexpr void flip() noexcept;
1065710665
\end{itemdecl}
1065810666

1065910667
\begin{itemdescr}
@@ -10681,7 +10689,7 @@
1068110689
\end{codeblock}
1068210690
\end{itemdescr}
1068310691

10684-
10692+
\rSec3[vector.bool.members]{\tcode{vector<bool>} members}
1068510693

1068610694
\indexlibrarymember{flip}{vector<bool>}%
1068710695
\begin{itemdecl}
@@ -11525,7 +11533,7 @@
1152511533

1152611534
template<class Key, class T, class Compare, class Allocator>
1152711535
constexpr void swap(multimap<Key, T, Compare, Allocator>& x,
11528-
multimap<Key, T, Compare, Allocator>& y)
11536+
multimap<Key, T, Compare, Allocator>& y)
1152911537
noexcept(noexcept(x.swap(y)));
1153011538

1153111539
// \ref{multimap.erasure}, erasure for \tcode{multimap}
@@ -26063,7 +26071,7 @@
2606326071
\tcode{j...[$\rho$]} is equal to the sum of
2606426072
\begin{itemize}
2606526073
\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$]}
2606726075
for extent $\rho$ of \tcode{m.extents()}, and
2606826076
\item
2606926077
zero if the type of \tcode{valid_slices...[$\rho$]} is a collapsing slice type,

0 commit comments

Comments
 (0)