|
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; |
|
3317 | 3319 | \tcode{*this} references the object referenced by \tcode{ref}. |
3318 | 3320 | \end{itemdescr} |
3319 | 3321 |
|
| 3322 | +\begin{itemdecl} |
| 3323 | +template<class U> |
| 3324 | + constexpr atomic_ref(const atomic_ref<U>&) noexcept; |
| 3325 | +\end{itemdecl} |
| 3326 | + |
| 3327 | +\begin{itemdescr} |
| 3328 | +\pnum |
| 3329 | +\constraints |
| 3330 | +\begin{itemize} |
| 3331 | +\item \tcode{T} and \tcode{U} are similar types\iref{conv.qual}, and |
| 3332 | +\item \tcode{is_convertible_v<U*, T*>} is \tcode{true}. |
| 3333 | +\end{itemize} |
| 3334 | + |
| 3335 | +\pnum |
| 3336 | +\ensures |
| 3337 | +\tcode{*this} references the object referenced by \tcode{ref}. |
| 3338 | +\end{itemdescr} |
| 3339 | + |
3320 | 3340 | \indexlibrarymember{store}{atomic_ref}% |
3321 | 3341 | \indexlibrarymember{store}{atomic_ref<\placeholder{pointer-type}>}% |
3322 | 3342 | \indexlibrarymember{store}{atomic_ref<\placeholder{integral-type}>}% |
|
3642 | 3662 |
|
3643 | 3663 | constexpr explicit atomic_ref(@\placeholder{integral-type}@&); |
3644 | 3664 | constexpr atomic_ref(const atomic_ref&) noexcept; |
| 3665 | + template<class U> |
| 3666 | + constexpr atomic_ref(const atomic_ref<U>&) noexcept; |
3645 | 3667 | atomic_ref& operator=(const atomic_ref&) = delete; |
3646 | 3668 |
|
3647 | 3669 | 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, |
|
4148 | 4172 |
|
4149 | 4173 | constexpr explicit atomic_ref(@\placeholder{pointer-type}@&); |
4150 | 4174 | constexpr atomic_ref(const atomic_ref&) noexcept; |
| 4175 | + template<class U> |
| 4176 | + constexpr atomic_ref(const atomic_ref<U>&) noexcept; |
4151 | 4177 | atomic_ref& operator=(const atomic_ref&) = delete; |
4152 | 4178 |
|
4153 | 4179 | constexpr void store(value_type, memory_order = memory_order::seq_cst) const noexcept; |
|
0 commit comments