From Jason Turner

[basic.lookup.unqual]

Diff to HTML by rtfpessoa

tmp/tmph_ruj947/{from.md → to.md} RENAMED
@@ -68,12 +68,13 @@ void A::N::f() {
68
  // 4) global scope, before the definition of A::N::f
69
  }
70
  ```
71
 
72
  A name used in the definition of a class `X` outside of a member
73
- function body or nested class definition[^5] shall be declared in one of
74
- the following ways:
 
75
 
76
  - before its use in class `X` or be a member of a base class of `X` (
77
  [[class.member.lookup]]), or
78
  - if `X` is a nested class of class `Y` ([[class.nest]]), before the
79
  definition of `X` in `Y`, or shall be a member of a base class of `Y`
@@ -118,15 +119,16 @@ namespace scope are not considered; see  [[namespace.memdef]].
118
  names in a class definition. [[class.nest]] further describes the
119
  restrictions on the use of names in nested class definitions.
120
  [[class.local]] further describes the restrictions on the use of names
121
  in local class definitions.
122
 
123
- A name used in the definition of a member function ([[class.mfct]]) of
124
- class `X` following the function’s *declarator-id*[^7] or in the
125
  *brace-or-equal-initializer* of a non-static data member (
126
- [[class.mem]]) of class `X` shall be declared in one of the following
127
- ways:
 
128
 
129
  - before its use in the block in which it is used or in an enclosing
130
  block ([[stmt.block]]), or
131
  - shall be a member of class `X` or be a member of a base class of `X` (
132
  [[class.member.lookup]]), or
 
68
  // 4) global scope, before the definition of A::N::f
69
  }
70
  ```
71
 
72
  A name used in the definition of a class `X` outside of a member
73
+ function body, default argument, *exception-specification*,
74
+ *brace-or-equal-initializer* of a non-static data member, or nested
75
+ class definition[^5] shall be declared in one of the following ways:
76
 
77
  - before its use in class `X` or be a member of a base class of `X` (
78
  [[class.member.lookup]]), or
79
  - if `X` is a nested class of class `Y` ([[class.nest]]), before the
80
  definition of `X` in `Y`, or shall be a member of a base class of `Y`
 
119
  names in a class definition. [[class.nest]] further describes the
120
  restrictions on the use of names in nested class definitions.
121
  [[class.local]] further describes the restrictions on the use of names
122
  in local class definitions.
123
 
124
+ For the members of a class `X`, a name used in a member function body,
125
+ in a default argument, in an *exception-specification*, in the
126
  *brace-or-equal-initializer* of a non-static data member (
127
+ [[class.mem]]), or in the definition of a class member outside of the
128
+ definition of `X`, following the member’s *declarator-id*[^7], shall be
129
+ declared in one of the following ways:
130
 
131
  - before its use in the block in which it is used or in an enclosing
132
  block ([[stmt.block]]), or
133
  - shall be a member of class `X` or be a member of a base class of `X` (
134
  [[class.member.lookup]]), or