From Jason Turner

[new.syn]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmphqctut6t/{from.md → to.md} +32 -18
tmp/tmphqctut6t/{from.md → to.md} RENAMED
@@ -1,55 +1,69 @@
1
  ### Header `<new>` synopsis <a id="new.syn">[[new.syn]]</a>
2
 
3
  ``` cpp
4
  namespace std {
 
5
  class bad_alloc;
6
  class bad_array_new_length;
 
 
 
 
 
 
 
 
 
 
 
 
7
  enum class align_val_t : size_t {};
 
8
  struct nothrow_t { explicit nothrow_t() = default; };
9
  extern const nothrow_t nothrow;
 
10
  using new_handler = void (*)();
11
  new_handler get_new_handler() noexcept;
12
  new_handler set_new_handler(new_handler new_p) noexcept;
13
 
14
  // [ptr.launder], pointer optimization barrier
15
- template <class T> constexpr T* launder(T* p) noexcept;
16
 
17
  // [hardware.interference], hardware interference size
18
  inline constexpr size_t hardware_destructive_interference_size = implementation-defined{};
19
  inline constexpr size_t hardware_constructive_interference_size = implementation-defined{};
20
  }
21
 
22
- void* operator new(std::size_t size);
23
- void* operator new(std::size_t size, std::align_val_t alignment);
24
- void* operator new(std::size_t size, const std::nothrow_t&) noexcept;
25
- void* operator new(std::size_t size, std::align_val_t alignment,
 
26
  const std::nothrow_t&) noexcept;
 
27
  void operator delete(void* ptr) noexcept;
28
  void operator delete(void* ptr, std::size_t size) noexcept;
29
  void operator delete(void* ptr, std::align_val_t alignment) noexcept;
30
  void operator delete(void* ptr, std::size_t size, std::align_val_t alignment) noexcept;
31
  void operator delete(void* ptr, const std::nothrow_t&) noexcept;
32
- void operator delete(void* ptr, std::align_val_t alignment,
33
- const std::nothrow_t&) noexcept;
34
- void* operator new[](std::size_t size);
35
- void* operator new[](std::size_t size, std::align_val_t alignment);
36
- void* operator new[](std::size_t size, const std::nothrow_t&) noexcept;
37
- void* operator new[](std::size_t size, std::align_val_t alignment,
38
  const std::nothrow_t&) noexcept;
 
39
  void operator delete[](void* ptr) noexcept;
40
  void operator delete[](void* ptr, std::size_t size) noexcept;
41
  void operator delete[](void* ptr, std::align_val_t alignment) noexcept;
42
  void operator delete[](void* ptr, std::size_t size, std::align_val_t alignment) noexcept;
43
  void operator delete[](void* ptr, const std::nothrow_t&) noexcept;
44
- void operator delete[](void* ptr, std::align_val_t alignment,
45
- const std::nothrow_t&) noexcept;
46
 
47
- void* operator new (std::size_t size, void* ptr) noexcept;
48
- void* operator new[](std::size_t size, void* ptr) noexcept;
49
  void operator delete (void* ptr, void*) noexcept;
50
  void operator delete[](void* ptr, void*) noexcept;
51
  ```
52
 
53
-   [[intro.memory]], [[basic.stc.dynamic]], [[expr.new]],
54
- [[expr.delete]], [[class.free]], [[memory]].
55
-
 
1
  ### Header `<new>` synopsis <a id="new.syn">[[new.syn]]</a>
2
 
3
  ``` cpp
4
  namespace std {
5
+ // [alloc.errors], storage allocation errors
6
  class bad_alloc;
7
  class bad_array_new_length;
8
+
9
+ struct destroying_delete_t {
10
+ explicit destroying_delete_t() = default;
11
+ };
12
+ inline constexpr destroying_delete_t destroying_delete{};
13
+
14
+ // global operator new control%
15
+ %
16
+ %
17
+ %
18
+ %
19
+
20
  enum class align_val_t : size_t {};
21
+
22
  struct nothrow_t { explicit nothrow_t() = default; };
23
  extern const nothrow_t nothrow;
24
+
25
  using new_handler = void (*)();
26
  new_handler get_new_handler() noexcept;
27
  new_handler set_new_handler(new_handler new_p) noexcept;
28
 
29
  // [ptr.launder], pointer optimization barrier
30
+ template<class T> [[nodiscard]] constexpr T* launder(T* p) noexcept;
31
 
32
  // [hardware.interference], hardware interference size
33
  inline constexpr size_t hardware_destructive_interference_size = implementation-defined{};
34
  inline constexpr size_t hardware_constructive_interference_size = implementation-defined{};
35
  }
36
 
37
+ // [new.delete], storage allocation and deallocation
38
+ [[nodiscard]] void* operator new(std::size_t size);
39
+ [[nodiscard]] void* operator new(std::size_t size, std::align_val_t alignment);
40
+ [[nodiscard]] void* operator new(std::size_t size, const std::nothrow_t&) noexcept;
41
+ [[nodiscard]] void* operator new(std::size_t size, std::align_val_t alignment,
42
  const std::nothrow_t&) noexcept;
43
+
44
  void operator delete(void* ptr) noexcept;
45
  void operator delete(void* ptr, std::size_t size) noexcept;
46
  void operator delete(void* ptr, std::align_val_t alignment) noexcept;
47
  void operator delete(void* ptr, std::size_t size, std::align_val_t alignment) noexcept;
48
  void operator delete(void* ptr, const std::nothrow_t&) noexcept;
49
+ void operator delete(void* ptr, std::align_val_t alignment, const std::nothrow_t&) noexcept;
50
+
51
+ [[nodiscard]] void* operator new[](std::size_t size);
52
+ [[nodiscard]] void* operator new[](std::size_t size, std::align_val_t alignment);
53
+ [[nodiscard]] void* operator new[](std::size_t size, const std::nothrow_t&) noexcept;
54
+ [[nodiscard]] void* operator new[](std::size_t size, std::align_val_t alignment,
55
  const std::nothrow_t&) noexcept;
56
+
57
  void operator delete[](void* ptr) noexcept;
58
  void operator delete[](void* ptr, std::size_t size) noexcept;
59
  void operator delete[](void* ptr, std::align_val_t alignment) noexcept;
60
  void operator delete[](void* ptr, std::size_t size, std::align_val_t alignment) noexcept;
61
  void operator delete[](void* ptr, const std::nothrow_t&) noexcept;
62
+ void operator delete[](void* ptr, std::align_val_t alignment, const std::nothrow_t&) noexcept;
 
63
 
64
+ [[nodiscard]] void* operator new (std::size_t size, void* ptr) noexcept;
65
+ [[nodiscard]] void* operator new[](std::size_t size, void* ptr) noexcept;
66
  void operator delete (void* ptr, void*) noexcept;
67
  void operator delete[](void* ptr, void*) noexcept;
68
  ```
69