tmp/tmpy8vi_d68/{from.md → to.md}
RENAMED
|
@@ -240,13 +240,13 @@ void g(S<int>& sr) {
|
|
| 240 |
};
|
| 241 |
```
|
| 242 |
|
| 243 |
— *end example*]
|
| 244 |
|
| 245 |
-
If a function template
|
| 246 |
-
|
| 247 |
-
|
| 248 |
|
| 249 |
An implementation shall not implicitly instantiate a function template,
|
| 250 |
a variable template, a member template, a non-virtual member function, a
|
| 251 |
member class or static data member of a templated class, or a
|
| 252 |
substatement of a constexpr if statement [[stmt.if]], unless such
|
|
@@ -301,18 +301,18 @@ void g(A a, A b, A c) {
|
|
| 301 |
}
|
| 302 |
```
|
| 303 |
|
| 304 |
— *end example*]
|
| 305 |
|
| 306 |
-
The *noexcept-specifier*
|
| 307 |
-
|
| 308 |
-
|
|
|
|
| 309 |
but has not yet been instantiated, the dependent names are looked up,
|
| 310 |
the semantics constraints are checked, and the instantiation of any
|
| 311 |
-
template used in the
|
| 312 |
-
|
| 313 |
-
that point.
|
| 314 |
|
| 315 |
[*Note 6*: [[temp.point]] defines the point of instantiation of a
|
| 316 |
template specialization. — *end note*]
|
| 317 |
|
| 318 |
There is an *implementation-defined* quantity that specifies the limit
|
|
|
|
| 240 |
};
|
| 241 |
```
|
| 242 |
|
| 243 |
— *end example*]
|
| 244 |
|
| 245 |
+
If a function template specialization is used in a way that involves
|
| 246 |
+
overload resolution, a declaration of the specialization is implicitly
|
| 247 |
+
instantiated [[temp.over]].
|
| 248 |
|
| 249 |
An implementation shall not implicitly instantiate a function template,
|
| 250 |
a variable template, a member template, a non-virtual member function, a
|
| 251 |
member class or static data member of a templated class, or a
|
| 252 |
substatement of a constexpr if statement [[stmt.if]], unless such
|
|
|
|
| 301 |
}
|
| 302 |
```
|
| 303 |
|
| 304 |
— *end example*]
|
| 305 |
|
| 306 |
+
The *noexcept-specifier* and *function-contract-specifier*s of a
|
| 307 |
+
function template specialization are not instantiated along with the
|
| 308 |
+
function declaration; they are instantiated when needed
|
| 309 |
+
[[except.spec]], [[dcl.contract.func]]. If such a specifier is needed
|
| 310 |
but has not yet been instantiated, the dependent names are looked up,
|
| 311 |
the semantics constraints are checked, and the instantiation of any
|
| 312 |
+
template used in the specifier is done as if it were being done as part
|
| 313 |
+
of instantiating the declaration of the specialization at that point.
|
|
|
|
| 314 |
|
| 315 |
[*Note 6*: [[temp.point]] defines the point of instantiation of a
|
| 316 |
template specialization. — *end note*]
|
| 317 |
|
| 318 |
There is an *implementation-defined* quantity that specifies the limit
|