From Jason Turner

[ptr.launder]

Diff to HTML by rtfpessoa

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 are reachable through
13
- `p` (see below).
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 whenever the value of its argument may be used in a core
19
- constant expression. A byte of storage *b* is reachable through a
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