tmp/tmprnkdfcg3/{from.md → to.md}
RENAMED
|
@@ -24,13 +24,13 @@ introduced by a declaration in another scope:
|
|
| 24 |
A name having namespace scope ([[basic.scope.namespace]]) has internal
|
| 25 |
linkage if it is the name of
|
| 26 |
|
| 27 |
- a variable, function or function template that is explicitly declared
|
| 28 |
`static`; or,
|
| 29 |
-
- a variable that is explicitly declared `const` or
|
| 30 |
-
neither explicitly declared `extern` nor previously
|
| 31 |
-
external linkage; or
|
| 32 |
- a data member of an anonymous union.
|
| 33 |
|
| 34 |
An unnamed namespace or a namespace declared directly or indirectly
|
| 35 |
within an unnamed namespace has internal linkage. All other namespaces
|
| 36 |
have external linkage. A name having namespace scope that has not been
|
|
@@ -105,18 +105,18 @@ namespace X {
|
|
| 105 |
|
| 106 |
void q() { /* ... */ } // some other, unrelated q
|
| 107 |
```
|
| 108 |
|
| 109 |
Names not covered by these rules have no linkage. Moreover, except as
|
| 110 |
-
noted, a name declared at block scope ([[basic.scope.
|
| 111 |
linkage. A type is said to have linkage if and only if:
|
| 112 |
|
| 113 |
- it is a class or enumeration type that is named (or has a name for
|
| 114 |
linkage purposes ([[dcl.typedef]])) and the name has linkage; or
|
| 115 |
- it is an unnamed class or enumeration member of a class with linkage;
|
| 116 |
or
|
| 117 |
-
- it is a specialization of a class template
|
| 118 |
- it is a fundamental type ([[basic.fundamental]]); or
|
| 119 |
- it is a compound type ([[basic.compound]]) other than a class or
|
| 120 |
enumeration, compounded exclusively from types that have linkage; or
|
| 121 |
- it is a cv-qualified ([[basic.type.qualifier]]) version of a type
|
| 122 |
that has linkage.
|
|
|
|
| 24 |
A name having namespace scope ([[basic.scope.namespace]]) has internal
|
| 25 |
linkage if it is the name of
|
| 26 |
|
| 27 |
- a variable, function or function template that is explicitly declared
|
| 28 |
`static`; or,
|
| 29 |
+
- a non-volatile variable that is explicitly declared `const` or
|
| 30 |
+
`constexpr` and neither explicitly declared `extern` nor previously
|
| 31 |
+
declared to have external linkage; or
|
| 32 |
- a data member of an anonymous union.
|
| 33 |
|
| 34 |
An unnamed namespace or a namespace declared directly or indirectly
|
| 35 |
within an unnamed namespace has internal linkage. All other namespaces
|
| 36 |
have external linkage. A name having namespace scope that has not been
|
|
|
|
| 105 |
|
| 106 |
void q() { /* ... */ } // some other, unrelated q
|
| 107 |
```
|
| 108 |
|
| 109 |
Names not covered by these rules have no linkage. Moreover, except as
|
| 110 |
+
noted, a name declared at block scope ([[basic.scope.block]]) has no
|
| 111 |
linkage. A type is said to have linkage if and only if:
|
| 112 |
|
| 113 |
- it is a class or enumeration type that is named (or has a name for
|
| 114 |
linkage purposes ([[dcl.typedef]])) and the name has linkage; or
|
| 115 |
- it is an unnamed class or enumeration member of a class with linkage;
|
| 116 |
or
|
| 117 |
+
- it is a specialization of a class template (Clause [[temp]])[^10]; or
|
| 118 |
- it is a fundamental type ([[basic.fundamental]]); or
|
| 119 |
- it is a compound type ([[basic.compound]]) other than a class or
|
| 120 |
enumeration, compounded exclusively from types that have linkage; or
|
| 121 |
- it is a cv-qualified ([[basic.type.qualifier]]) version of a type
|
| 122 |
that has linkage.
|