From Jason Turner

[temp.dep.expr]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpyssdnckf/{from.md → to.md} +26 -11
tmp/tmpyssdnckf/{from.md → to.md} RENAMED
@@ -10,14 +10,22 @@ dependent ([[temp.dep.type]]).
10
 
11
  An *id-expression* is type-dependent if it contains
12
 
13
  - an *identifier* associated by name lookup with one or more
14
  declarations declared with a dependent type,
 
 
 
15
  - an *identifier* associated by name lookup with one or more
16
  declarations of member functions of the current instantiation declared
17
- with a return type that contains a placeholder type (
18
- [[dcl.spec.auto]]),
 
 
 
 
 
19
  - a *template-id* that is dependent,
20
  - a *conversion-function-id* that specifies a dependent type, or
21
  - a *nested-name-specifier* or a *qualified-id* that names a member of
22
  an unknown specialization;
23
 
@@ -29,19 +37,26 @@ type-dependent only if the type specified by the *type-id*,
29
  subexpression is type-dependent:
30
 
31
  Expressions of the following forms are never type-dependent (because the
32
  type of the expression cannot be dependent):
33
 
34
- For the standard library macro `offsetof`, see  [[support.types]].
 
35
 
36
  A class member access expression ([[expr.ref]]) is type-dependent if
37
  the expression refers to a member of the current instantiation and the
38
  type of the referenced member is dependent, or the class member access
39
- expression refers to a member of an unknown specialization. In an
40
- expression of the form `x.y` or `xp->y` the type of the expression is
41
- usually the type of the member `y` of the class of `x` (or the class
42
- pointed to by `xp`). However, if `x` or `xp` refers to a dependent type
43
- that is not the current instantiation, the type of `y` is always
44
- dependent. If `x` or `xp` refers to a non-dependent type or refers to
45
- the current instantiation, the type of `y` is the type of the class
46
- member access expression.
 
 
 
 
 
 
47
 
 
10
 
11
  An *id-expression* is type-dependent if it contains
12
 
13
  - an *identifier* associated by name lookup with one or more
14
  declarations declared with a dependent type,
15
+ - an *identifier* associated by name lookup with a non-type
16
+ *template-parameter* declared with a type that contains a placeholder
17
+ type ([[dcl.spec.auto]]),
18
  - an *identifier* associated by name lookup with one or more
19
  declarations of member functions of the current instantiation declared
20
+ with a return type that contains a placeholder type,
21
+ - an *identifier* associated by name lookup with a structured binding
22
+ declaration ([[dcl.struct.bind]]) whose *brace-or-equal-initializer*
23
+ is type-dependent,
24
+ - the *identifier* `__func__` ([[dcl.fct.def.general]]), where any
25
+ enclosing function is a template, a member of a class template, or a
26
+ generic lambda,
27
  - a *template-id* that is dependent,
28
  - a *conversion-function-id* that specifies a dependent type, or
29
  - a *nested-name-specifier* or a *qualified-id* that names a member of
30
  an unknown specialization;
31
 
 
37
  subexpression is type-dependent:
38
 
39
  Expressions of the following forms are never type-dependent (because the
40
  type of the expression cannot be dependent):
41
 
42
+ [*Note 1*: For the standard library macro `offsetof`, see 
43
+ [[support.types]]. — *end note*]
44
 
45
  A class member access expression ([[expr.ref]]) is type-dependent if
46
  the expression refers to a member of the current instantiation and the
47
  type of the referenced member is dependent, or the class member access
48
+ expression refers to a member of an unknown specialization.
49
+
50
+ [*Note 2*: In an expression of the form `x.y` or `xp->y` the type of
51
+ the expression is usually the type of the member `y` of the class of `x`
52
+ (or the class pointed to by `xp`). However, if `x` or `xp` refers to a
53
+ dependent type that is not the current instantiation, the type of `y` is
54
+ always dependent. If `x` or `xp` refers to a non-dependent type or
55
+ refers to the current instantiation, the type of `y` is the type of the
56
+ class member access expression. — *end note*]
57
+
58
+ A *braced-init-list* is type-dependent if any element is type-dependent
59
+ or is a pack expansion.
60
+
61
+ A *fold-expression* is type-dependent.
62