tmp/tmp0jurvvm8/{from.md → to.md}
RENAMED
|
@@ -7,22 +7,18 @@ template<class T> [[nodiscard]] constexpr T* launder(T* p) noexcept;
|
|
| 7 |
*Mandates:* `!is_function_v<T> && !is_void_v<T>` is `true`.
|
| 8 |
|
| 9 |
*Preconditions:* `p` represents the address *A* of a byte in memory. An
|
| 10 |
object *X* that is within its lifetime [[basic.life]] and whose type is
|
| 11 |
similar [[conv.qual]] to `T` is located at the address *A*. All bytes of
|
| 12 |
-
storage that would be reachable through the result
|
| 13 |
-
`p`
|
| 14 |
|
| 15 |
-
*Returns:* A value of type `T*` that points to
|
| 16 |
|
| 17 |
*Remarks:* An invocation of this function may be used in a core constant
|
| 18 |
-
expression
|
| 19 |
-
|
| 20 |
-
pointer value that points to an object *Y* if there is an object *Z*,
|
| 21 |
-
pointer-interconvertible with *Y*, such that *b* is within the storage
|
| 22 |
-
occupied by *Z*, or the immediately-enclosing array object if *Z* is an
|
| 23 |
-
array element.
|
| 24 |
|
| 25 |
[*Note 1*: If a new object is created in storage occupied by an
|
| 26 |
existing object of the same type, a pointer to the original object can
|
| 27 |
be used to refer to the new object unless its complete object is a const
|
| 28 |
object or it is a base class subobject; in the latter cases, this
|
|
|
|
| 7 |
*Mandates:* `!is_function_v<T> && !is_void_v<T>` is `true`.
|
| 8 |
|
| 9 |
*Preconditions:* `p` represents the address *A* of a byte in memory. An
|
| 10 |
object *X* that is within its lifetime [[basic.life]] and whose type is
|
| 11 |
similar [[conv.qual]] to `T` is located at the address *A*. All bytes of
|
| 12 |
+
storage that would be reachable through [[basic.compound]] the result
|
| 13 |
+
are reachable through `p`.
|
| 14 |
|
| 15 |
+
*Returns:* A value of type `T*` that points to *X*.
|
| 16 |
|
| 17 |
*Remarks:* An invocation of this function may be used in a core constant
|
| 18 |
+
expression if and only if the (converted) value of its argument may be
|
| 19 |
+
used in place of the function invocation.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
|
| 21 |
[*Note 1*: If a new object is created in storage occupied by an
|
| 22 |
existing object of the same type, a pointer to the original object can
|
| 23 |
be used to refer to the new object unless its complete object is a const
|
| 24 |
object or it is a base class subobject; in the latter cases, this
|