From Jason Turner

[temp.inst]

Diff to HTML by rtfpessoa

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 or a member function template specialization is
246
- used in a way that involves overload resolution, a declaration of the
247
- specialization is implicitly 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,18 +301,18 @@ void g(A a, A b, A c) {
301
  }
302
  ```
303
 
304
  — *end example*]
305
 
306
- The *noexcept-specifier* of a function template specialization is not
307
- instantiated along with the function declaration; it is instantiated
308
- when needed [[except.spec]]. If such an *noexcept-specifier* is needed
 
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 *noexcept-specifier* is done as if it were being
312
- done as part of instantiating the declaration of the specialization at
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