From Jason Turner

[temp.spec.partial]

Diff to HTML by rtfpessoa

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