From Jason Turner

[expr.dynamic.cast]

Diff to HTML by rtfpessoa

tmp/tmpqkci1y2j/{from.md → to.md} RENAMED
@@ -20,13 +20,14 @@ If `T` is “pointer to *cv1* `B`” and `v` has type “pointer to *cv2* `D`”
20
  such that `B` is a base class of `D`, the result is a pointer to the
21
  unique `B` subobject of the `D` object pointed to by `v`, or a null
22
  pointer value if `v` is a null pointer value. Similarly, if `T` is
23
  “reference to *cv1* `B`” and `v` has type *cv2* `D` such that `B` is a
24
  base class of `D`, the result is the unique `B` subobject of the `D`
25
- object referred to by `v`.[^14] In both the pointer and reference cases,
26
- the program is ill-formed if `B` is an inaccessible or ambiguous base
27
- class of `D`.
 
28
 
29
  [*Example 1*:
30
 
31
  ``` cpp
32
  struct B { };
@@ -46,11 +47,11 @@ If `v` is a null pointer value, the result is a null pointer value.
46
  If `T` is “pointer to cv `void`”, then the result is a pointer to the
47
  most derived object pointed to by `v`. Otherwise, a runtime check is
48
  applied to see if the object pointed or referred to by `v` can be
49
  converted to the type pointed or referred to by `T`.
50
 
51
- If `C` is the class type to which `T` points or refers, the runtime
52
  check logically executes as follows:
53
 
54
  - If, in the most derived object pointed (referred) to by `v`, `v`
55
  points (refers) to a public base class subobject of a `C` object, and
56
  if only one object of type `C` is derived from the subobject pointed
 
20
  such that `B` is a base class of `D`, the result is a pointer to the
21
  unique `B` subobject of the `D` object pointed to by `v`, or a null
22
  pointer value if `v` is a null pointer value. Similarly, if `T` is
23
  “reference to *cv1* `B`” and `v` has type *cv2* `D` such that `B` is a
24
  base class of `D`, the result is the unique `B` subobject of the `D`
25
+ object referred to by `v`.[^14]
26
+
27
+ In both the pointer and reference cases, the program is ill-formed if
28
+ `B` is an inaccessible or ambiguous base class of `D`.
29
 
30
  [*Example 1*:
31
 
32
  ``` cpp
33
  struct B { };
 
47
  If `T` is “pointer to cv `void`”, then the result is a pointer to the
48
  most derived object pointed to by `v`. Otherwise, a runtime check is
49
  applied to see if the object pointed or referred to by `v` can be
50
  converted to the type pointed or referred to by `T`.
51
 
52
+ Let `C` be the class type to which `T` points or refers. The runtime
53
  check logically executes as follows:
54
 
55
  - If, in the most derived object pointed (referred) to by `v`, `v`
56
  points (refers) to a public base class subobject of a `C` object, and
57
  if only one object of type `C` is derived from the subobject pointed