tmp/tmpm7urp6a_/{from.md → to.md}
RENAMED
|
@@ -1,29 +1,26 @@
|
|
| 1 |
## Pointer conversions <a id="conv.ptr">[[conv.ptr]]</a>
|
| 2 |
|
| 3 |
-
A *null pointer constant* is an
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
is not a null pointer value.
|
| 16 |
|
| 17 |
A prvalue of type “pointer to *cv* `T`,” where `T` is an object type,
|
| 18 |
can be converted to a prvalue of type “pointer to *cv* `void`”. The
|
| 19 |
-
result of converting a
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
null pointer value is converted to the null pointer value of the
|
| 24 |
-
destination type.
|
| 25 |
|
| 26 |
A prvalue of type “pointer to *cv* `D`”, where `D` is a class type, can
|
| 27 |
be converted to a prvalue of type “pointer to *cv* `B`”, where `B` is a
|
| 28 |
base class (Clause [[class.derived]]) of `D`. If `B` is an inaccessible
|
| 29 |
(Clause [[class.access]]) or ambiguous ([[class.member.lookup]]) base
|
|
|
|
| 1 |
## Pointer conversions <a id="conv.ptr">[[conv.ptr]]</a>
|
| 2 |
|
| 3 |
+
A *null pointer constant* is an integer literal ([[lex.icon]]) with
|
| 4 |
+
value zero or a prvalue of type `std::nullptr_t`. A null pointer
|
| 5 |
+
constant can be converted to a pointer type; the result is the *null
|
| 6 |
+
pointer value* of that type and is distinguishable from every other
|
| 7 |
+
value of object pointer or function pointer type. Such a conversion is
|
| 8 |
+
called a *null pointer conversion*. Two null pointer values of the same
|
| 9 |
+
type shall compare equal. The conversion of a null pointer constant to a
|
| 10 |
+
pointer to cv-qualified type is a single conversion, and not the
|
| 11 |
+
sequence of a pointer conversion followed by a qualification
|
| 12 |
+
conversion ([[conv.qual]]). A null pointer constant of integral type
|
| 13 |
+
can be converted to a prvalue of type `std::nullptr_t`. The resulting
|
| 14 |
+
prvalue is not a null pointer value.
|
|
|
|
| 15 |
|
| 16 |
A prvalue of type “pointer to *cv* `T`,” where `T` is an object type,
|
| 17 |
can be converted to a prvalue of type “pointer to *cv* `void`”. The
|
| 18 |
+
result of converting a non-null pointer value of a pointer to object
|
| 19 |
+
type to a “pointer to *cv* `void`” represents the address of the same
|
| 20 |
+
byte in memory as the original pointer value. The null pointer value is
|
| 21 |
+
converted to the null pointer value of the destination type.
|
|
|
|
|
|
|
| 22 |
|
| 23 |
A prvalue of type “pointer to *cv* `D`”, where `D` is a class type, can
|
| 24 |
be converted to a prvalue of type “pointer to *cv* `B`”, where `B` is a
|
| 25 |
base class (Clause [[class.derived]]) of `D`. If `B` is an inaccessible
|
| 26 |
(Clause [[class.access]]) or ambiguous ([[class.member.lookup]]) base
|