tmp/tmp_kmvmiey/{from.md → to.md}
RENAMED
|
@@ -1,16 +1,17 @@
|
|
| 1 |
-
#### Partial specialization for `shared_ptr` <a id="util.smartptr.atomic.shared">[[util.smartptr.atomic.shared]]</a>
|
| 2 |
|
| 3 |
``` cpp
|
| 4 |
namespace std {
|
| 5 |
template<class T> struct atomic<shared_ptr<T>> {
|
| 6 |
using value_type = shared_ptr<T>;
|
| 7 |
|
| 8 |
static constexpr bool is_always_lock_free = implementation-defined // whether a given atomic type's operations are always lock free;
|
| 9 |
bool is_lock_free() const noexcept;
|
| 10 |
|
| 11 |
constexpr atomic() noexcept;
|
|
|
|
| 12 |
atomic(shared_ptr<T> desired) noexcept;
|
| 13 |
atomic(const atomic&) = delete;
|
| 14 |
void operator=(const atomic&) = delete;
|
| 15 |
|
| 16 |
shared_ptr<T> load(memory_order order = memory_order::seq_cst) const noexcept;
|
|
|
|
| 1 |
+
##### Partial specialization for `shared_ptr` <a id="util.smartptr.atomic.shared">[[util.smartptr.atomic.shared]]</a>
|
| 2 |
|
| 3 |
``` cpp
|
| 4 |
namespace std {
|
| 5 |
template<class T> struct atomic<shared_ptr<T>> {
|
| 6 |
using value_type = shared_ptr<T>;
|
| 7 |
|
| 8 |
static constexpr bool is_always_lock_free = implementation-defined // whether a given atomic type's operations are always lock free;
|
| 9 |
bool is_lock_free() const noexcept;
|
| 10 |
|
| 11 |
constexpr atomic() noexcept;
|
| 12 |
+
constexpr atomic(nullptr_t) noexcept : atomic() { }
|
| 13 |
atomic(shared_ptr<T> desired) noexcept;
|
| 14 |
atomic(const atomic&) = delete;
|
| 15 |
void operator=(const atomic&) = delete;
|
| 16 |
|
| 17 |
shared_ptr<T> load(memory_order order = memory_order::seq_cst) const noexcept;
|