From Jason Turner

[expr.mptr.oper]

Diff to HTML by rtfpessoa

tmp/tmps20o6ap5/{from.md → to.md} RENAMED
@@ -20,13 +20,14 @@ type “pointer to member of `T`” to its first operand, which shall be of
20
  type “pointer to `U`” where `U` is either `T` or a class of which `T` is
21
  an unambiguous and accessible base class. The expression `E1->*E2` is
22
  converted into the equivalent form `(*(E1)).*E2`.
23
 
24
  Abbreviating *pm-expression*`.*`*cast-expression* as `E1.*E2`, `E1` is
25
- called the *object expression*. If the dynamic type of `E1` does not
26
- contain the member to which `E2` refers, the behavior is undefined.
27
- Otherwise, the expression `E1` is sequenced before the expression `E2`.
 
28
 
29
  The restrictions on cv-qualification, and the manner in which the
30
  cv-qualifiers of the operands are combined to produce the cv-qualifiers
31
  of the result, are the same as the rules for `E1.E2` given in 
32
  [[expr.ref]].
 
20
  type “pointer to `U`” where `U` is either `T` or a class of which `T` is
21
  an unambiguous and accessible base class. The expression `E1->*E2` is
22
  converted into the equivalent form `(*(E1)).*E2`.
23
 
24
  Abbreviating *pm-expression*`.*`*cast-expression* as `E1.*E2`, `E1` is
25
+ called the *object expression*. If the result of `E1` is an object whose
26
+ type is not similar to the type of `E1`, or whose most derived object
27
+ does not contain the member to which `E2` refers, the behavior is
28
+ undefined. The expression `E1` is sequenced before the expression `E2`.
29
 
30
  The restrictions on cv-qualification, and the manner in which the
31
  cv-qualifiers of the operands are combined to produce the cv-qualifiers
32
  of the result, are the same as the rules for `E1.E2` given in 
33
  [[expr.ref]].