From Jason Turner

[basic.lval]

Diff to HTML by rtfpessoa

tmp/tmpwe8mrgtf/{from.md → to.md} RENAMED
@@ -15,11 +15,12 @@ Expressions are categorized according to the taxonomy in Figure 
15
  return type is an lvalue reference is an lvalue.
16
  - An *xvalue* (an “eXpiring” value) also refers to an object, usually
17
  near the end of its lifetime (so that its resources may be moved, for
18
  example). An xvalue is the result of certain kinds of expressions
19
  involving rvalue references ([[dcl.ref]]). The result of calling a
20
- function whose return type is an rvalue reference is an xvalue.
 
21
  - A *glvalue* (“generalized” lvalue) is an lvalue or an xvalue.
22
  - An *rvalue* (so called, historically, because rvalues could appear on
23
  the right-hand side of an assignment expression) is an xvalue, a
24
  temporary object ([[class.temporary]]) or subobject thereof, or a
25
  value that is not associated with an object.
@@ -46,14 +47,15 @@ is not such a context; see  [[dcl.init.ref]].
46
 
47
  The discussion of reference initialization in  [[dcl.init.ref]] and of
48
  temporaries in  [[class.temporary]] indicates the behavior of lvalues
49
  and rvalues in other significant contexts.
50
 
51
- Class prvalues can have cv-qualified types; non-class prvalues always
52
- have cv-unqualified types. Unless otherwise indicated ([[expr.call]]),
53
- prvalues shall always have complete types or the `void` type; in
54
- addition to these types, glvalues can also have incomplete types.
 
55
 
56
  An lvalue for an object is necessary in order to modify the object
57
  except that an rvalue of class type can also be used to modify its
58
  referent under certain circumstances. a member function called for an
59
  object ([[class.mfct]]) can modify the object.
@@ -74,11 +76,11 @@ the expression is called *modifiable*. A program that attempts to modify
74
  an object through a nonmodifiable lvalue or rvalue expression is
75
  ill-formed.
76
 
77
  If a program attempts to access the stored value of an object through a
78
  glvalue of other than one of the following types the behavior is
79
- undefined:[^28]
80
 
81
  - the dynamic type of the object,
82
  - a cv-qualified version of the dynamic type of the object,
83
  - a type similar (as defined in  [[conv.qual]]) to the dynamic type of
84
  the object,
 
15
  return type is an lvalue reference is an lvalue.
16
  - An *xvalue* (an “eXpiring” value) also refers to an object, usually
17
  near the end of its lifetime (so that its resources may be moved, for
18
  example). An xvalue is the result of certain kinds of expressions
19
  involving rvalue references ([[dcl.ref]]). The result of calling a
20
+ function whose return type is an rvalue reference to an object type is
21
+ an xvalue ([[expr.call]]).
22
  - A *glvalue* (“generalized” lvalue) is an lvalue or an xvalue.
23
  - An *rvalue* (so called, historically, because rvalues could appear on
24
  the right-hand side of an assignment expression) is an xvalue, a
25
  temporary object ([[class.temporary]]) or subobject thereof, or a
26
  value that is not associated with an object.
 
47
 
48
  The discussion of reference initialization in  [[dcl.init.ref]] and of
49
  temporaries in  [[class.temporary]] indicates the behavior of lvalues
50
  and rvalues in other significant contexts.
51
 
52
+ Unless otherwise indicated ([[expr.call]]), prvalues shall always have
53
+ complete types or the `void` type; in addition to these types, glvalues
54
+ can also have incomplete types. class and array prvalues can have
55
+ cv-qualified types; other prvalues always have cv-unqualified types. See
56
+ Clause  [[expr]].
57
 
58
  An lvalue for an object is necessary in order to modify the object
59
  except that an rvalue of class type can also be used to modify its
60
  referent under certain circumstances. a member function called for an
61
  object ([[class.mfct]]) can modify the object.
 
76
  an object through a nonmodifiable lvalue or rvalue expression is
77
  ill-formed.
78
 
79
  If a program attempts to access the stored value of an object through a
80
  glvalue of other than one of the following types the behavior is
81
+ undefined:[^30]
82
 
83
  - the dynamic type of the object,
84
  - a cv-qualified version of the dynamic type of the object,
85
  - a type similar (as defined in  [[conv.qual]]) to the dynamic type of
86
  the object,