From Jason Turner

[basic.pre]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpx9c1lftp/{from.md → to.md} +30 -12
tmp/tmpx9c1lftp/{from.md → to.md} RENAMED
@@ -15,19 +15,38 @@ Clauses. — *end note*]
15
 
16
  An *entity* is a value, object, reference, structured binding, function,
17
  enumerator, type, class member, bit-field, template, template
18
  specialization, namespace, or pack.
19
 
20
- A *name* is a use of an *identifier* [[lex.name]],
21
- *operator-function-id* [[over.oper]], *literal-operator-id*
22
- [[over.literal]], *conversion-function-id* [[class.conv.fct]], or
23
- *template-id* [[temp.names]] that denotes an entity or label (
24
- [[stmt.goto]], [[stmt.label]]).
25
-
26
- Every name that denotes an entity is introduced by a *declaration*.
27
- Every name that denotes a label is introduced either by a `goto`
28
- statement [[stmt.goto]] or a *labeled-statement* [[stmt.label]].
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
  A *variable* is introduced by the declaration of a reference other than
31
  a non-static data member or of an object. The variable’s name, if any,
32
  denotes the reference or object.
33
 
@@ -44,13 +63,12 @@ it. The process that determines this is called *name lookup*
44
 
45
  Two names are *the same* if
46
 
47
  - they are *identifier*s composed of the same character sequence, or
48
  - they are *operator-function-id*s formed with the same operator, or
49
- - they are *conversion-function-id*s formed with the same type, or
50
- - they are *template-id*s that refer to the same class, function, or
51
- variable [[temp.type]], or
52
  - they are *literal-operator-id*s [[over.literal]] formed with the same
53
  literal suffix identifier.
54
 
55
  A name used in more than one translation unit can potentially refer to
56
  the same entity in these translation units depending on the linkage
 
15
 
16
  An *entity* is a value, object, reference, structured binding, function,
17
  enumerator, type, class member, bit-field, template, template
18
  specialization, namespace, or pack.
19
 
20
+ A *name* is an *identifier* [[lex.name]], *operator-function-id*
21
+ [[over.oper]], *literal-operator-id* [[over.literal]], or
22
+ *conversion-function-id* [[class.conv.fct]].
23
+
24
+ Every name is introduced by a *declaration*, which is a
25
+
26
+ - *name-declaration*, *block-declaration*, or *member-declaration*
27
+ [[dcl.pre]], [[class.mem]],
28
+ - *init-declarator* [[dcl.decl]],
29
+ - *identifier* in a structured binding declaration [[dcl.struct.bind]],
30
+ - *init-capture* [[expr.prim.lambda.capture]],
31
+ - *condition* with a *declarator* [[stmt.pre]],
32
+ - *member-declarator* [[class.mem]],
33
+ - *using-declarator* [[namespace.udecl]],
34
+ - *parameter-declaration* [[dcl.fct]],
35
+ - *type-parameter* [[temp.param]],
36
+ - *elaborated-type-specifier* that introduces a name [[dcl.type.elab]],
37
+ - *class-specifier* [[class.pre]],
38
+ - *enum-specifier* or *enumerator-definition* [[dcl.enum]],
39
+ - *exception-declaration* [[except.pre]], or
40
+ - implicit declaration of an injected-class-name [[class.pre]].
41
+
42
+ [*Note 3*: The interpretation of a *for-range-declaration* produces one
43
+ or more of the above [[stmt.ranged]]. — *end note*]
44
+
45
+ An entity E is denoted by the name (if any) that is introduced by a
46
+ declaration of E or by a *typedef-name* introduced by a declaration
47
+ specifying E.
48
 
49
  A *variable* is introduced by the declaration of a reference other than
50
  a non-static data member or of an object. The variable’s name, if any,
51
  denotes the reference or object.
52
 
 
63
 
64
  Two names are *the same* if
65
 
66
  - they are *identifier*s composed of the same character sequence, or
67
  - they are *operator-function-id*s formed with the same operator, or
68
+ - they are *conversion-function-id*s formed with equivalent
69
+ [[temp.over.link]] types, or
 
70
  - they are *literal-operator-id*s [[over.literal]] formed with the same
71
  literal suffix identifier.
72
 
73
  A name used in more than one translation unit can potentially refer to
74
  the same entity in these translation units depending on the linkage