tmp/tmpke88jkn6/{from.md → to.md}
RENAMED
|
@@ -103,19 +103,20 @@ A<int,int*> a; // uses the partial specialization, which is found through t
|
|
| 103 |
// which refers to the primary template
|
| 104 |
```
|
| 105 |
|
| 106 |
— *end example*]
|
| 107 |
|
| 108 |
-
A
|
| 109 |
-
parameter. All other
|
|
|
|
| 110 |
|
| 111 |
Within the argument list of a partial specialization, the following
|
| 112 |
restrictions apply:
|
| 113 |
|
| 114 |
- The type of a template parameter corresponding to a specialized
|
| 115 |
-
|
| 116 |
-
specialization.
|
| 117 |
\[*Example 5*:
|
| 118 |
``` cpp
|
| 119 |
template <class T, T t> struct C {};
|
| 120 |
template <class T> struct C<T, 1>; // error
|
| 121 |
|
|
@@ -126,11 +127,11 @@ restrictions apply:
|
|
| 126 |
|
| 127 |
— *end example*]
|
| 128 |
- The partial specialization shall be more specialized than the primary
|
| 129 |
template [[temp.spec.partial.order]].
|
| 130 |
- The template parameter list of a partial specialization shall not
|
| 131 |
-
contain default template argument values.[^
|
| 132 |
- An argument shall not contain an unexpanded pack. If an argument is a
|
| 133 |
pack expansion [[temp.variadic]], it shall be the last argument in the
|
| 134 |
template argument list.
|
| 135 |
|
| 136 |
The usual access checking rules do not apply to non-dependent names used
|
|
|
|
| 103 |
// which refers to the primary template
|
| 104 |
```
|
| 105 |
|
| 106 |
— *end example*]
|
| 107 |
|
| 108 |
+
A constant template argument is non-specialized if it is the name of a
|
| 109 |
+
constant template parameter. All other constant template arguments are
|
| 110 |
+
specialized.
|
| 111 |
|
| 112 |
Within the argument list of a partial specialization, the following
|
| 113 |
restrictions apply:
|
| 114 |
|
| 115 |
- The type of a template parameter corresponding to a specialized
|
| 116 |
+
constant template argument shall not be dependent on a parameter of
|
| 117 |
+
the partial specialization.
|
| 118 |
\[*Example 5*:
|
| 119 |
``` cpp
|
| 120 |
template <class T, T t> struct C {};
|
| 121 |
template <class T> struct C<T, 1>; // error
|
| 122 |
|
|
|
|
| 127 |
|
| 128 |
— *end example*]
|
| 129 |
- The partial specialization shall be more specialized than the primary
|
| 130 |
template [[temp.spec.partial.order]].
|
| 131 |
- The template parameter list of a partial specialization shall not
|
| 132 |
+
contain default template argument values.[^7]
|
| 133 |
- An argument shall not contain an unexpanded pack. If an argument is a
|
| 134 |
pack expansion [[temp.variadic]], it shall be the last argument in the
|
| 135 |
template argument list.
|
| 136 |
|
| 137 |
The usual access checking rules do not apply to non-dependent names used
|