tmp/tmp5cq5mug3/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
### [[depr]]: compatibility features <a id="diff.cpp17.depr">[[diff.cpp17.depr]]</a>
|
| 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
|
| 14 |
+
`std::bind` and `std::not_fn` function templates. **Effect on original
|
| 15 |
+
feature:** A valid C++17 program that relies on the presence of
|
| 16 |
+
`result_type`, `argument_type`, `first_argument_type`, or
|
| 17 |
+
`second_argument_type` in a standard library class may fail to compile.
|
| 18 |
+
A valid C++17 program that calls `not1` or `not2`, or uses the class
|
| 19 |
+
templates `unary_negate` or `binary_negate`, may fail to compile.
|
| 20 |
+
|
| 21 |
+
**Change:** Remove redundant members from `std::allocator`.
|
| 22 |
+
**Rationale:** `std::allocator` was overspecified, encouraging direct
|
| 23 |
+
usage in user containers rather than relying on `std::allocator_traits`,
|
| 24 |
+
leading to poor containers. **Effect on original feature:** A valid
|
| 25 |
+
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
|
| 40 |
+
wrappers to guard use of the facility in many cases. **Effect on
|
| 41 |
+
original feature:** A valid C++17 program that calls
|
| 42 |
+
`get_temporary_buffer` or `return_temporary_buffer` may fail to compile.
|
| 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 |
+
|