From Jason Turner

[temp.names]

Diff to HTML by rtfpessoa

tmp/tmplochgjfh/{from.md → to.md} RENAMED
@@ -41,13 +41,13 @@ For a *template-name* to be explicitly qualified by the template
41
  arguments, the name must be known to refer to a template.
42
 
43
  After name lookup ([[basic.lookup]]) finds that a name is a
44
  *template-name* or that an *operator-function-id* or a
45
  *literal-operator-id* refers to a set of overloaded functions any member
46
- of which is a function template if this is followed by a `<`, the `<` is
47
- always taken as the delimiter of a *template-argument-list* and never as
48
- the less-than operator. When parsing a *template-argument-list*, the
49
  first non-nested `>`[^2] is taken as the ending delimiter rather than a
50
  greater-than operator. Similarly, the first non-nested `>{>}` is treated
51
  as two consecutive but distinct `>` tokens, the first of which is taken
52
  as the end of the and completes the . The second `>` token produced by
53
  this replacement rule may terminate an enclosing construct or it may be
@@ -112,11 +112,11 @@ template <class T> struct B {
112
  template <class T2> struct C { };
113
  };
114
 
115
  // OK: T::template C names a class template:
116
  template <class T, template <class X> class TT = T::template C> struct D { };
117
- D<b<int> > db;
118
  ```
119
 
120
  A *simple-template-id* that names a class template specialization is a
121
  *class-name* (Clause  [[class]]).
122
 
 
41
  arguments, the name must be known to refer to a template.
42
 
43
  After name lookup ([[basic.lookup]]) finds that a name is a
44
  *template-name* or that an *operator-function-id* or a
45
  *literal-operator-id* refers to a set of overloaded functions any member
46
+ of which is a function template, if this is followed by a `<`, the `<`
47
+ is always taken as the delimiter of a *template-argument-list* and never
48
+ as the less-than operator. When parsing a *template-argument-list*, the
49
  first non-nested `>`[^2] is taken as the ending delimiter rather than a
50
  greater-than operator. Similarly, the first non-nested `>{>}` is treated
51
  as two consecutive but distinct `>` tokens, the first of which is taken
52
  as the end of the and completes the . The second `>` token produced by
53
  this replacement rule may terminate an enclosing construct or it may be
 
112
  template <class T2> struct C { };
113
  };
114
 
115
  // OK: T::template C names a class template:
116
  template <class T, template <class X> class TT = T::template C> struct D { };
117
+ D<B<int> > db;
118
  ```
119
 
120
  A *simple-template-id* that names a class template specialization is a
121
  *class-name* (Clause  [[class]]).
122