From Jason Turner

[util.smartptr.atomic.shared]

Diff to HTML by rtfpessoa

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;