From Jason Turner

[temp.spec.partial.general]

Diff to HTML by rtfpessoa

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 non-type argument is non-specialized if it is the name of a non-type
109
- parameter. All other non-type arguments are specialized.
 
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
- non-type argument shall not be dependent on a parameter of the partial
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.[^8]
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