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
|
| 74 |
-
|
|
|
|
| 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 |
-
|
| 124 |
-
|
| 125 |
*brace-or-equal-initializer* of a non-static data member (
|
| 126 |
-
[[class.mem]])
|
| 127 |
-
|
|
|
|
| 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
|