From Jason Turner

[expr.type]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpa_ylz1q3/{from.md → to.md} +10 -8
tmp/tmpa_ylz1q3/{from.md → to.md} RENAMED
@@ -1,12 +1,14 @@
1
  ### Type <a id="expr.type">[[expr.type]]</a>
2
 
3
  If an expression initially has the type “reference to `T`”
4
  [[dcl.ref]], [[dcl.init.ref]], the type is adjusted to `T` prior to any
5
- further analysis. The expression designates the object or function
6
- denoted by the reference, and the expression is an lvalue or an xvalue,
7
- depending on the expression.
 
 
8
 
9
  [*Note 1*: Before the lifetime of the reference has started or after it
10
  has ended, the behavior is undefined (see 
11
  [[basic.life]]). — *end note*]
12
 
@@ -26,15 +28,15 @@ pointer-to-member type or `std::nullptr_t`, is:
26
  “pointer to *cv12* `void`”, where *cv12* is the union of *cv1* and
27
  *cv2*;
28
  - if `T1` or `T2` is “pointer to `noexcept` function” and the other type
29
  is “pointer to function”, where the function types are otherwise the
30
  same, “pointer to function”;
31
- - if `T1` is “pointer to *cv1* `C1`” and `T2` is “pointer to *cv2*
32
- `C2`”, where `C1` is reference-related to `C2` or `C2` is
33
- reference-related to `C1` [[dcl.init.ref]], the qualification-combined
34
- type [[conv.qual]] of `T1` and `T2` or the qualification-combined type
35
- of `T2` and `T1`, respectively;
36
  - if `T1` or `T2` is “pointer to member of `C1` of type function”, the
37
  other type is “pointer to member of `C2` of type `noexcept` function”,
38
  and `C1` is reference-related to `C2` or `C2` is reference-related to
39
  `C1` [[dcl.init.ref]], where the function types are otherwise the
40
  same, “pointer to member of `C2` of type function” or “pointer to
 
1
  ### Type <a id="expr.type">[[expr.type]]</a>
2
 
3
  If an expression initially has the type “reference to `T`”
4
  [[dcl.ref]], [[dcl.init.ref]], the type is adjusted to `T` prior to any
5
+ further analysis; the value category of the expression is not altered.
6
+ Let X be the object or function denoted by the reference. If a pointer
7
+ to X would be valid in the context of the evaluation of the expression
8
+ [[basic.fundamental]], the result designates X; otherwise, the behavior
9
+ is undefined.
10
 
11
  [*Note 1*: Before the lifetime of the reference has started or after it
12
  has ended, the behavior is undefined (see 
13
  [[basic.life]]). — *end note*]
14
 
 
28
  “pointer to *cv12* `void`”, where *cv12* is the union of *cv1* and
29
  *cv2*;
30
  - if `T1` or `T2` is “pointer to `noexcept` function” and the other type
31
  is “pointer to function”, where the function types are otherwise the
32
  same, “pointer to function”;
33
+ - if `T1` is “pointer to `C1`” and `T2` is “pointer to `C2`”, where `C1`
34
+ is reference-related to `C2` or `C2` is reference-related to `C1`
35
+ [[dcl.init.ref]], the qualification-combined type [[conv.qual]] of
36
+ `T1` and `T2` or the qualification-combined type of `T2` and `T1`,
37
+ respectively;
38
  - if `T1` or `T2` is “pointer to member of `C1` of type function”, the
39
  other type is “pointer to member of `C2` of type `noexcept` function”,
40
  and `C1` is reference-related to `C2` or `C2` is reference-related to
41
  `C1` [[dcl.init.ref]], where the function types are otherwise the
42
  same, “pointer to member of `C2` of type function” or “pointer to