tmp/tmpy1k96e74/{from.md → to.md}
RENAMED
|
@@ -3,28 +3,30 @@
|
|
| 3 |
A *null pointer constant* is an integer literal [[lex.icon]] with value
|
| 4 |
zero or a prvalue of type `std::nullptr_t`. A null pointer constant can
|
| 5 |
be converted to a pointer type; the result is the null pointer value of
|
| 6 |
that type [[basic.compound]] 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*.
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
to a prvalue of type `std::nullptr_t`.
|
| 14 |
|
| 15 |
[*Note 1*: The resulting prvalue is not a null pointer
|
| 16 |
value. — *end note*]
|
| 17 |
|
| 18 |
A prvalue of type “pointer to cv `T`”, where `T` is an object type, can
|
| 19 |
be converted to a prvalue of type “pointer to cv `void`”. The pointer
|
| 20 |
value [[basic.compound]] is unchanged by this conversion.
|
| 21 |
|
| 22 |
-
A prvalue of type “pointer to cv `D`”, where `D` is a complete class
|
| 23 |
type, can be converted to a prvalue of type “pointer to cv `B`”, where
|
| 24 |
`B` is a base class [[class.derived]] of `D`. If `B` is an inaccessible
|
| 25 |
[[class.access]] or ambiguous [[class.member.lookup]] base class of `D`,
|
| 26 |
-
a program that necessitates this conversion is ill-formed.
|
| 27 |
-
|
| 28 |
-
class
|
| 29 |
-
|
|
|
|
|
|
|
|
|
|
| 30 |
|
|
|
|
| 3 |
A *null pointer constant* is an integer literal [[lex.icon]] with value
|
| 4 |
zero or a prvalue of type `std::nullptr_t`. A null pointer constant can
|
| 5 |
be converted to a pointer type; the result is the null pointer value of
|
| 6 |
that type [[basic.compound]] 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*. The conversion of a null pointer
|
| 9 |
+
constant to a pointer to cv-qualified type is a single conversion, and
|
| 10 |
+
not the sequence of a pointer conversion followed by a qualification
|
| 11 |
+
conversion [[conv.qual]]. A null pointer constant of integral type can
|
| 12 |
+
be converted to a prvalue of type `std::nullptr_t`.
|
|
|
|
| 13 |
|
| 14 |
[*Note 1*: The resulting prvalue is not a null pointer
|
| 15 |
value. — *end note*]
|
| 16 |
|
| 17 |
A prvalue of type “pointer to cv `T`”, where `T` is an object type, can
|
| 18 |
be converted to a prvalue of type “pointer to cv `void`”. The pointer
|
| 19 |
value [[basic.compound]] is unchanged by this conversion.
|
| 20 |
|
| 21 |
+
A prvalue `v` of type “pointer to cv `D`”, where `D` is a complete class
|
| 22 |
type, can be converted to a prvalue of type “pointer to cv `B`”, where
|
| 23 |
`B` is a base class [[class.derived]] of `D`. If `B` is an inaccessible
|
| 24 |
[[class.access]] or ambiguous [[class.member.lookup]] base class of `D`,
|
| 25 |
+
a program that necessitates this conversion is ill-formed. If `v` is a
|
| 26 |
+
null pointer value, the result is a null pointer value. Otherwise, if
|
| 27 |
+
`B` is a virtual base class of `D` and `v` does not point to an object
|
| 28 |
+
whose type is similar [[conv.qual]] to `D` and that is within its
|
| 29 |
+
lifetime or within its period of construction or destruction
|
| 30 |
+
[[class.cdtor]], the behavior is undefined. Otherwise, the result is a
|
| 31 |
+
pointer to the base class subobject of the derived class object.
|
| 32 |
|