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 `<`
|
| 47 |
-
always taken as the delimiter of a *template-argument-list* and never
|
| 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<
|
| 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 |
|