From Jason Turner

[diff.cpp17.depr]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpp5nz3jid/{from.md → to.md} +10 -10
tmp/tmpp5nz3jid/{from.md → to.md} RENAMED
@@ -2,12 +2,12 @@
2
 
3
  **Change:** Remove `uncaught_exception`. **Rationale:** The function did
4
  not have a clear specification when multiple exceptions were active, and
5
  has been superseded by `uncaught_exceptions`. **Effect on original
6
  feature:** A valid C++17 program that calls `std::uncaught_exception`
7
- may fail to compile. It might be revised to use
8
- `std::uncaught_exceptions` instead, for clear and portable semantics.
9
 
10
  **Change:** Remove support for adaptable function API. **Rationale:**
11
  The deprecated support relied on a limited convention that could not be
12
  extended to support the general case or new language features. It has
13
  been superseded by direct language support with `decltype`, and by the
@@ -26,14 +26,14 @@ C++17 program that directly makes use of the `pointer`, `const_pointer`,
26
  `reference`, `const_reference`, `rebind`, `address`, `construct`,
27
  `destroy`, or `max_size` members of `std::allocator`, or that directly
28
  calls `allocate` with an additional hint argument, may fail to compile.
29
 
30
  **Change:** Remove `raw_storage_iterator`. **Rationale:** The iterator
31
- encouraged use of algorithms that might throw exceptions, but did not
32
- return the number of elements successfully constructed that might need
33
- to be destroyed in order to avoid leaks. **Effect on original feature:**
34
- A valid C++17 program that uses this iterator class may fail to compile.
35
 
36
  **Change:** Remove temporary buffers API. **Rationale:** The temporary
37
  buffer facility was intended to provide an efficient optimization for
38
  small memory requests, but there is little evidence this was achieved in
39
  practice, while requiring the user to provide their own exception-safe
@@ -43,19 +43,19 @@ original feature:** A valid C++17 program that calls
43
 
44
  **Change:** Remove `shared_ptr::unique`. **Rationale:** The result of a
45
  call to this member function is not reliable in the presence of multiple
46
  threads and weak pointers. The member function `use_count` is similarly
47
  unreliable, but has a clearer contract in such cases, and remains
48
- available for well defined use in single-threaded cases. **Effect on
49
  original feature:** A valid C++17 program that calls `unique` on a
50
  `shared_ptr` object may fail to compile.
51
 
52
  **Change:** Remove deprecated type traits. **Rationale:** The traits had
53
  unreliable or awkward interfaces. The `is_literal_type` trait provided
54
  no way to detect which subset of constructors and member functions of a
55
  type were declared `constexpr`. The `result_of` trait had a surprising
56
- syntax that could not report the result of a regular function type. It
57
- has been superseded by the `invoke_result` trait. **Effect on original
58
- feature:** A valid C++17 program that relies on the `is_literal_type` or
59
  `result_of` type traits, on the `is_literal_type_v` variable template,
60
  or on the `result_of_t` alias template may fail to compile.
61
 
 
2
 
3
  **Change:** Remove `uncaught_exception`. **Rationale:** The function did
4
  not have a clear specification when multiple exceptions were active, and
5
  has been superseded by `uncaught_exceptions`. **Effect on original
6
  feature:** A valid C++17 program that calls `std::uncaught_exception`
7
+ may fail to compile. It can be revised to use `std::uncaught_exceptions`
8
+ instead, for clear and portable semantics.
9
 
10
  **Change:** Remove support for adaptable function API. **Rationale:**
11
  The deprecated support relied on a limited convention that could not be
12
  extended to support the general case or new language features. It has
13
  been superseded by direct language support with `decltype`, and by the
 
26
  `reference`, `const_reference`, `rebind`, `address`, `construct`,
27
  `destroy`, or `max_size` members of `std::allocator`, or that directly
28
  calls `allocate` with an additional hint argument, may fail to compile.
29
 
30
  **Change:** Remove `raw_storage_iterator`. **Rationale:** The iterator
31
+ encouraged use of potentially-throwing algorithms, but did not return
32
+ the number of elements successfully constructed, as would be necessary
33
+ to destroy them. **Effect on original feature:** A valid C++17 program
34
+ that uses this iterator class may fail to compile.
35
 
36
  **Change:** Remove temporary buffers API. **Rationale:** The temporary
37
  buffer facility was intended to provide an efficient optimization for
38
  small memory requests, but there is little evidence this was achieved in
39
  practice, while requiring the user to provide their own exception-safe
 
43
 
44
  **Change:** Remove `shared_ptr::unique`. **Rationale:** The result of a
45
  call to this member function is not reliable in the presence of multiple
46
  threads and weak pointers. The member function `use_count` is similarly
47
  unreliable, but has a clearer contract in such cases, and remains
48
+ available for well-defined use in single-threaded cases. **Effect on
49
  original feature:** A valid C++17 program that calls `unique` on a
50
  `shared_ptr` object may fail to compile.
51
 
52
  **Change:** Remove deprecated type traits. **Rationale:** The traits had
53
  unreliable or awkward interfaces. The `is_literal_type` trait provided
54
  no way to detect which subset of constructors and member functions of a
55
  type were declared `constexpr`. The `result_of` trait had a surprising
56
+ syntax that did not directly support function types. It has been
57
+ superseded by the `invoke_result` trait. **Effect on original feature:**
58
+ A valid C++17 program that relies on the `is_literal_type` or
59
  `result_of` type traits, on the `is_literal_type_v` variable template,
60
  or on the `result_of_t` alias template may fail to compile.
61