diff --git a/source/support.tex b/source/support.tex index 203a1bf45f..50d18d92d8 100644 --- a/source/support.tex +++ b/source/support.tex @@ -594,7 +594,7 @@ #define @\defnlibxname{cpp_lib_atomic_lock_free_type_aliases}@ 201907L // also in \libheader{atomic} #define @\defnlibxname{cpp_lib_atomic_min_max}@ 202506L // freestanding, also in \libheader{atomic} #define @\defnlibxname{cpp_lib_atomic_reductions}@ 202506L // freestanding, also in \libheader{atomic} -#define @\defnlibxname{cpp_lib_atomic_ref}@ 202411L // freestanding, also in \libheader{atomic} +#define @\defnlibxname{cpp_lib_atomic_ref}@ 202603L // freestanding, also in \libheader{atomic} #define @\defnlibxname{cpp_lib_atomic_shared_ptr}@ 201711L // also in \libheader{memory} #define @\defnlibxname{cpp_lib_atomic_value_initialization}@ 201911L // freestanding, also in \libheader{atomic}, \libheader{memory} #define @\defnlibxname{cpp_lib_atomic_wait}@ 201907L // freestanding, also in \libheader{atomic} diff --git a/source/threads.tex b/source/threads.tex index 3ee6804cb1..23121ca0c0 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -2397,6 +2397,10 @@ \rSec2[atomics.general]{General} +\pnum +Let \tcode{\placeholdernc{COPYCV}(FROM, TO)} be an alias for type \tcode{TO} +with the addition of \tcode{FROM}'s top-level cv-qualifiers. + \pnum Subclause \ref{atomics} describes components for fine-grained atomic access. This access is provided via operations on atomic objects. @@ -3153,6 +3157,7 @@ public: using value_type = remove_cv_t; + using @\exposid{address-return-type}@ = @\placeholdernc{COPYCV}@(T, void)*; // \expos static constexpr size_t required_alignment = @\impdefx{required alignment for \tcode{atomic_ref} type's operations}@; static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic_ref} type's operations are always lock free}@; @@ -3183,7 +3188,7 @@ constexpr void wait(value_type, memory_order = memory_order::seq_cst) const noexcept; constexpr void notify_one() const noexcept; constexpr void notify_all() const noexcept; - constexpr T* address() const noexcept; + constexpr @\exposid{address-return-type}@ address() const noexcept; }; } \end{codeblock} @@ -3613,7 +3618,7 @@ \indexlibrarymember{address}{atomic_ref}% \begin{itemdecl} -constexpr T* address() const noexcept; +constexpr @\exposid{address-return-type}@ address() const noexcept; \end{itemdecl} \begin{itemdescr} @@ -3650,6 +3655,7 @@ public: using value_type = remove_cv_t<@\placeholder{integral-type}@>; using difference_type = value_type; + using @\exposid{address-return-type}@ = @\placeholdernc{COPYCV}@(@\placeholder{integral-type}@, void)*; // \expos static constexpr size_t required_alignment = @\impdefx{required alignment for \tcode{atomic_ref} type's operations}@; static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic_ref} type's operations are always lock free}@; @@ -3720,7 +3726,7 @@ constexpr void wait(value_type, memory_order = memory_order::seq_cst) const noexcept; constexpr void notify_one() const noexcept; constexpr void notify_all() const noexcept; - constexpr @\placeholder{integral-type}@* address() const noexcept; + constexpr @\exposid{address-return-type}@ address() const noexcept; }; } \end{codeblock} @@ -3874,6 +3880,7 @@ public: using value_type = remove_cv_t<@\placeholder{floating-point-type}@>; using difference_type = value_type; + using @\exposid{address-return-type}@ = @\placeholdernc{COPYCV}@(@\placeholder{floating-point-type}@, void)*; // \expos static constexpr size_t required_alignment = @\impdefx{required alignment for \tcode{atomic_ref} type's operations}@; static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic_ref} type's operations are always lock free}@; @@ -3940,7 +3947,7 @@ memory_order = memory_order::seq_cst) const noexcept; constexpr void notify_one() const noexcept; constexpr void notify_all() const noexcept; - constexpr @\placeholder{floating-point-type}@* address() const noexcept; + constexpr @\exposid{address-return-type}@ address() const noexcept; }; } \end{codeblock} @@ -4168,6 +4175,7 @@ public: using value_type = remove_cv_t<@\placeholder{pointer-type}@>; using difference_type = ptrdiff_t; + using @\exposid{address-return-type}@ = @\placeholdernc{COPYCV}@(@\placeholder{pointer-type}@, void)*; // \expos static constexpr size_t required_alignment = @\impdefx{required alignment for \tcode{atomic_ref} type's operations}@; static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic_ref} type's operations are always lock free}@; @@ -4223,7 +4231,7 @@ constexpr void wait(value_type, memory_order = memory_order::seq_cst) const noexcept; constexpr void notify_one() const noexcept; constexpr void notify_all() const noexcept; - constexpr @\placeholder{pointer-type}@* address() const noexcept; + constexpr @\placeholder{address-return-type}@ address() const noexcept; }; } \end{codeblock}