Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 29 additions & 31 deletions source/threads.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2419,8 +2419,6 @@
namespace std {
// \ref{atomics.ref.generic}, class template \tcode{atomic_ref}
template<class T> struct atomic_ref; // freestanding
// \ref{atomics.ref.pointer}, partial specialization for pointers
template<class T> struct atomic_ref<T*>; // freestanding

// \ref{atomics.types.generic}, class template \tcode{atomic}
template<class T> struct atomic; // freestanding
Expand Down Expand Up @@ -3277,7 +3275,7 @@
\rSec3[atomics.ref.ops]{Operations}

\indexlibrarymember{required_alignment}{atomic_ref}%
\indexlibrarymember{required_alignment}{atomic_ref<T*>}%
\indexlibrarymember{required_alignment}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{required_alignment}{atomic_ref<\placeholder{integral-type}>}%
\indexlibrarymember{required_alignment}{atomic_ref<\placeholder{floating-point-type}>}%
\begin{itemdecl}
Expand All @@ -3303,7 +3301,7 @@
\end{itemdescr}

\indexlibrarymember{is_always_lock_free}{atomic_ref}%
\indexlibrarymember{is_always_lock_free}{atomic_ref<T*>}%
\indexlibrarymember{is_always_lock_free}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{is_always_lock_free}{atomic_ref<\placeholder{integral-type}>}%
\indexlibrarymember{is_always_lock_free}{atomic_ref<\placeholder{floating-point-type}>}%
\begin{itemdecl}
Expand All @@ -3318,7 +3316,7 @@
\end{itemdescr}

\indexlibrarymember{is_lock_free}{atomic_ref}%
\indexlibrarymember{is_lock_free}{atomic_ref<T*>}%
\indexlibrarymember{is_lock_free}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{is_lock_free}{atomic_ref<\placeholder{integral-type}>}%
\indexlibrarymember{is_lock_free}{atomic_ref<\placeholder{floating-point-type}>}%
\begin{itemdecl}
Expand All @@ -3334,7 +3332,7 @@
\end{itemdescr}

\indexlibraryctor{atomic_ref}%
\indexlibraryctor{atomic_ref<T*>}%
\indexlibraryctor{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrary{\idxcode{atomic_ref<\placeholder{integral-type}>}!constructor}%
\indexlibrary{\idxcode{atomic_ref<\placeholder{floating-point-type}>}!constructor}%
\begin{itemdecl}
Expand All @@ -3356,7 +3354,7 @@
\end{itemdescr}

\indexlibraryctor{atomic_ref}%
\indexlibraryctor{atomic_ref<T*>}%
\indexlibraryctor{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrary{\idxcode{atomic_ref<\placeholder{integral-type}>}!constructor}%
\indexlibrary{\idxcode{atomic_ref<\placeholder{floating-point-type}>}!constructor}%
\begin{itemdecl}
Expand All @@ -3370,7 +3368,7 @@
\end{itemdescr}

\indexlibrarymember{store}{atomic_ref}%
\indexlibrarymember{store}{atomic_ref<T*>}%
\indexlibrarymember{store}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{store}{atomic_ref<\placeholder{integral-type}>}%
\indexlibrarymember{store}{atomic_ref<\placeholder{floating-point-type}>}%
\begin{itemdecl}
Expand Down Expand Up @@ -3398,7 +3396,7 @@
\end{itemdescr}

\indexlibrarymember{operator=}{atomic_ref}%
\indexlibrarymember{operator=}{atomic_ref<T*>}%
\indexlibrarymember{operator=}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{operator=}{atomic_ref<\placeholder{integral-type}>}%
\indexlibrarymember{operator=}{atomic_ref<\placeholder{floating-point-type}>}%
\begin{itemdecl}
Expand All @@ -3420,7 +3418,7 @@
\end{itemdescr}

\indexlibrarymember{load}{atomic_ref}%
\indexlibrarymember{load}{atomic_ref<T*>}%
\indexlibrarymember{load}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{load}{atomic_ref<\placeholder{integral-type}>}%
\indexlibrarymember{load}{atomic_ref<\placeholder{floating-point-type}>}%
\begin{itemdecl}
Expand All @@ -3445,7 +3443,7 @@
\end{itemdescr}

\indexlibrarymember{operator \placeholder{type}}{atomic_ref}%
\indexlibrarymember{operator T*}{atomic_ref<T*>}%
\indexlibrarymember{operator \placeholder{pointer-type}}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{operator \placeholder{integral-type}}{atomic_ref<\placeholder{integral-type}>}%
\indexlibrarymember{operator \placeholder{floating-point-type}}{atomic_ref<\placeholder{floating-point-type}>}%
\begin{itemdecl}
Expand All @@ -3459,7 +3457,7 @@
\end{itemdescr}

\indexlibrarymember{exchange}{atomic_ref}%
\indexlibrarymember{exchange}{atomic_ref<T*>}%
\indexlibrarymember{exchange}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{exchange}{atomic_ref<\placeholder{integral-type}>}%
\indexlibrarymember{exchange}{atomic_ref<\placeholder{floating-point-type}>}%
\begin{itemdecl}
Expand All @@ -3486,11 +3484,11 @@
\end{itemdescr}

\indexlibrarymember{compare_exchange_weak}{atomic_ref}%
\indexlibrarymember{compare_exchange_weak}{atomic_ref<T*>}%
\indexlibrarymember{compare_exchange_weak}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{compare_exchange_weak}{atomic_ref<\placeholder{integral-type}>}%
\indexlibrarymember{compare_exchange_weak}{atomic_ref<\placeholder{floating-point-type}>}%
\indexlibrarymember{compare_exchange_strong}{atomic_ref}%
\indexlibrarymember{compare_exchange_strong}{atomic_ref<T*>}%
\indexlibrarymember{compare_exchange_strong}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{compare_exchange_strong}{atomic_ref<\placeholder{integral-type}>}%
\indexlibrarymember{compare_exchange_strong}{atomic_ref<\placeholder{floating-point-type}>}%
\begin{itemdecl}
Expand Down Expand Up @@ -4169,8 +4167,8 @@
\tcode{return fetch_\placeholder{key}(operand) \placeholdernc{op} operand;}
\end{itemdescr}

\rSec3[atomics.ref.pointer]{Partial specialization for pointers}
\indexlibraryglobal{atomic_ref<T*>}%
\rSec3[atomics.ref.pointer]{Specialization for pointers}
\indexlibraryglobal{atomic_ref<\placeholder{pointer-type}>}%

\pnum
There are specializations of the \tcode{atomic_ref} class template
Expand All @@ -4186,7 +4184,7 @@

\begin{codeblock}
namespace std {
template<class T> struct atomic_ref<@\placeholder{pointer-type}@> {
template<> struct atomic_ref<@\placeholder{pointer-type}@> {
private:
@\placeholder{pointer-type}@* ptr; // \expos

Expand Down Expand Up @@ -4260,10 +4258,10 @@
The correspondence among key, operator, and computation is specified
in \tref{atomic.types.pointer.comp}.

\indexlibrarymember{fetch_add}{atomic_ref<T*>}%
\indexlibrarymember{fetch_sub}{atomic_ref<T*>}%
\indexlibrarymember{fetch_max}{atomic_ref<T*>}%
\indexlibrarymember{fetch_min}{atomic_ref<T*>}%
\indexlibrarymember{fetch_add}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{fetch_sub}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{fetch_max}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{fetch_min}{atomic_ref<\placeholder{pointer-type}>}%
\begin{itemdecl}
constexpr value_type fetch_@\placeholdernc{key}@(difference_type operand,
memory_order order = memory_order::seq_cst) const noexcept;
Expand Down Expand Up @@ -4309,10 +4307,10 @@
\end{note}
\end{itemdescr}

\indexlibrarymember{store_add}{atomic_ref<T*>}%
\indexlibrarymember{store_sub}{atomic_ref<T*>}%
\indexlibrarymember{store_max}{atomic_ref<T*>}%
\indexlibrarymember{store_min}{atomic_ref<T*>}%
\indexlibrarymember{store_add}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{store_sub}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{store_max}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{store_min}{atomic_ref<\placeholder{pointer-type}>}%
\begin{itemdecl}
constexpr void store_@\placeholdernc{key}@(@\UNSP{see above}@ operand,
memory_order order = memory_order::seq_cst) const noexcept;
Expand Down Expand Up @@ -4352,8 +4350,8 @@
\end{note}
\end{itemdescr}

\indexlibrarymember{operator+=}{atomic_ref<T*>}%
\indexlibrarymember{operator-=}{atomic_ref<T*>}%
\indexlibrarymember{operator+=}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{operator-=}{atomic_ref<\placeholder{pointer-type}>}%
\begin{itemdecl}
constexpr value_type operator @\placeholder{op}@=(difference_type operand) const noexcept;
\end{itemdecl}
Expand All @@ -4380,7 +4378,7 @@
for the specializations in \ref{atomics.ref.int}.


\indexlibrarymember{operator++}{atomic_ref<T*>}%
\indexlibrarymember{operator++}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{operator++}{atomic_ref<\placeholder{integral-type}>}%
\begin{itemdecl}
constexpr value_type operator++(int) const noexcept;
Expand All @@ -4396,7 +4394,7 @@
Equivalent to: \tcode{return fetch_add(1);}
\end{itemdescr}

\indexlibrarymember{operator--}{atomic_ref<T*>}%
\indexlibrarymember{operator--}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{operator--}{atomic_ref<\placeholder{integral-type}>}%
\begin{itemdecl}
constexpr value_type operator--(int) const noexcept;
Expand All @@ -4412,7 +4410,7 @@
Equivalent to: \tcode{return fetch_sub(1);}
\end{itemdescr}

\indexlibrarymember{operator++}{atomic_ref<T*>}%
\indexlibrarymember{operator++}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{operator++}{atomic_ref<\placeholder{integral-type}>}%
\begin{itemdecl}
constexpr value_type operator++() const noexcept;
Expand All @@ -4428,7 +4426,7 @@
Equivalent to: \tcode{return fetch_add(1) + 1;}
\end{itemdescr}

\indexlibrarymember{operator--}{atomic_ref<T*>}%
\indexlibrarymember{operator--}{atomic_ref<\placeholder{pointer-type}>}%
\indexlibrarymember{operator--}{atomic_ref<\placeholder{integral-type}>}%
\begin{itemdecl}
constexpr value_type operator--() const noexcept;
Expand Down