|
3161 | 3161 |
|
3162 | 3162 | constexpr explicit atomic_ref(T&); |
3163 | 3163 | constexpr atomic_ref(const atomic_ref&) noexcept; |
| 3164 | + template<class U> |
| 3165 | + constexpr atomic_ref(const atomic_ref<U>&) noexcept; |
3164 | 3166 | atomic_ref& operator=(const atomic_ref&) = delete; |
3165 | 3167 |
|
3166 | 3168 | constexpr void store(value_type, memory_order = memory_order::seq_cst) const noexcept; |
|
3313 | 3315 | \tcode{*this} references the object referenced by \tcode{ref}. |
3314 | 3316 | \end{itemdescr} |
3315 | 3317 |
|
| 3318 | +\begin{itemdecl} |
| 3319 | +template<class U> |
| 3320 | + constexpr atomic_ref(const atomic_ref<U>&) noexcept; |
| 3321 | +\end{itemdecl} |
| 3322 | + |
| 3323 | +\begin{itemdescr} |
| 3324 | +\pnum |
| 3325 | +\constraints |
| 3326 | +\begin{itemize} |
| 3327 | +\item \tcode{T} and \tcode{U} are similar types\iref{conv.qual}, and |
| 3328 | +\item \tcode{is_convertible_v<U*, T*>} is \tcode{true}. |
| 3329 | +\end{itemize} |
| 3330 | + |
| 3331 | +\pnum |
| 3332 | +\ensures |
| 3333 | +\tcode{*this} references the object referenced by \tcode{ref}. |
| 3334 | +\end{itemdescr} |
| 3335 | + |
3316 | 3336 | \indexlibrarymember{store}{atomic_ref}% |
3317 | 3337 | \indexlibrarymember{store}{atomic_ref<\placeholder{pointer-type}>}% |
3318 | 3338 | \indexlibrarymember{store}{atomic_ref<\placeholder{integral-type}>}% |
|
3638 | 3658 |
|
3639 | 3659 | constexpr explicit atomic_ref(@\placeholder{integral-type}@&); |
3640 | 3660 | constexpr atomic_ref(const atomic_ref&) noexcept; |
| 3661 | + template<class U> |
| 3662 | + constexpr atomic_ref(const atomic_ref<U>&) noexcept; |
3641 | 3663 | atomic_ref& operator=(const atomic_ref&) = delete; |
3642 | 3664 |
|
3643 | 3665 | constexpr void store(value_type, memory_order = memory_order::seq_cst) const noexcept; |
|
3860 | 3882 |
|
3861 | 3883 | constexpr explicit atomic_ref(@\placeholder{floating-point-type}@&); |
3862 | 3884 | constexpr atomic_ref(const atomic_ref&) noexcept; |
| 3885 | + template<class U> |
| 3886 | + constexpr atomic_ref(const atomic_ref<U>&) noexcept; |
3863 | 3887 | atomic_ref& operator=(const atomic_ref&) = delete; |
3864 | 3888 |
|
3865 | 3889 | constexpr void store(value_type, |
|
4152 | 4176 |
|
4153 | 4177 | constexpr explicit atomic_ref(@\placeholder{pointer-type}@&); |
4154 | 4178 | constexpr atomic_ref(const atomic_ref&) noexcept; |
| 4179 | + template<class U> |
| 4180 | + constexpr atomic_ref(const atomic_ref<U>&) noexcept; |
4155 | 4181 | atomic_ref& operator=(const atomic_ref&) = delete; |
4156 | 4182 |
|
4157 | 4183 | constexpr void store(value_type, memory_order = memory_order::seq_cst) const noexcept; |
|
0 commit comments