|
123 | 123 | declared name
|
124 | 124 | is a
|
125 | 125 | \grammarterm{simple-template-id},
|
126 |
| -the declaration declares a partial specialization\iref{temp.class.spec}. |
| 126 | +the declaration declares a partial specialization\iref{temp.spec.partial}. |
127 | 127 | \end{note}
|
128 | 128 |
|
129 | 129 | \pnum
|
|
157 | 157 | \pnum
|
158 | 158 | A class template shall not have the same name as any other
|
159 | 159 | template, class, function, variable, enumeration, enumerator, namespace, or
|
160 |
| -type in the same scope\iref{basic.scope}, except as specified in~\ref{temp.class.spec}. |
| 160 | +type in the same scope\iref{basic.scope}, except as specified in~\ref{temp.spec.partial}. |
161 | 161 | Except that a function template can be overloaded either by non-template
|
162 | 162 | functions\iref{dcl.fct} with the same name or by other function templates
|
163 | 163 | with the same name\iref{temp.over},
|
|
1321 | 1321 | parameter.
|
1322 | 1322 |
|
1323 | 1323 | \pnum
|
1324 |
| -Any partial specializations\iref{temp.class.spec} associated with the |
| 1324 | +Any partial specializations\iref{temp.spec.partial} associated with the |
1325 | 1325 | primary template are considered when a
|
1326 | 1326 | specialization based on the template
|
1327 | 1327 | \grammarterm{template-parameter}
|
|
1991 | 1991 | \item the best viable candidate of non-template functions\iref{over.match.best},
|
1992 | 1992 | \item the address of a non-template function\iref{over.over},
|
1993 | 1993 | \item the matching of template template arguments\iref{temp.arg.template},
|
1994 |
| -\item the partial ordering of class template specializations\iref{temp.class.order}, and |
| 1994 | +\item the partial ordering of class template specializations\iref{temp.spec.partial.order}, and |
1995 | 1995 | \item the partial ordering of function templates\iref{temp.func.order}.
|
1996 | 1996 | \end{itemize}
|
1997 | 1997 | \end{note}
|
|
2165 | 2165 | \begin{note}
|
2166 | 2166 | A \grammarterm{template-id}
|
2167 | 2167 | cannot be the declared name of a primary template declaration.
|
2168 |
| -However, this syntax is allowed in partial specializations\iref{temp.class.spec}. |
| 2168 | +However, this syntax is allowed in partial specializations\iref{temp.spec.partial}. |
2169 | 2169 | \end{note}
|
2170 | 2170 |
|
2171 | 2171 | \pnum
|
|
3067 | 3067 | \pnum
|
3068 | 3068 | A template friend declaration specifies that all specializations of that
|
3069 | 3069 | template, whether they are implicitly instantiated\iref{temp.inst}, partially
|
3070 |
| -specialized\iref{temp.class.spec} or explicitly specialized\iref{temp.expl.spec}, |
| 3070 | +specialized\iref{temp.spec.partial} or explicitly specialized\iref{temp.expl.spec}, |
3071 | 3071 | are friends of the class containing the template friend declaration.
|
3072 | 3072 | \begin{example}
|
3073 | 3073 | \begin{codeblock}
|
|
3171 | 3171 | Such a constrained friend function or function template declaration
|
3172 | 3172 | does not declare the same function or function template as a declaration in any other scope.
|
3173 | 3173 |
|
3174 |
| -\rSec2[temp.class.spec]{Partial specialization} |
| 3174 | +\rSec2[temp.spec.partial]{Partial specialization} |
3175 | 3175 |
|
3176 |
| -\rSec3[temp.class.spec.general]{General} |
| 3176 | +\rSec3[temp.spec.partial.general]{General} |
3177 | 3177 |
|
3178 | 3178 | \pnum
|
3179 | 3179 | \indextext{specialization!class template partial}%
|
|
3189 | 3189 | A partial specialization of a template provides an alternative definition
|
3190 | 3190 | of the template that is used instead of the primary definition when the
|
3191 | 3191 | arguments in a specialization match those given in the partial
|
3192 |
| -specialization\iref{temp.class.spec.match}. |
| 3192 | +specialization\iref{temp.spec.partial.match}. |
3193 | 3193 | The primary template shall be declared before any partial specializations of
|
3194 | 3194 | that template.
|
3195 | 3195 | A partial specialization shall be declared before the first use of a template
|
|
3333 | 3333 | \end{example}
|
3334 | 3334 | \item
|
3335 | 3335 | The partial specialization shall be more specialized than the primary
|
3336 |
| -template\iref{temp.class.order}. |
| 3336 | +template\iref{temp.spec.partial.order}. |
3337 | 3337 |
|
3338 | 3338 | \item
|
3339 | 3339 | The template parameter list of a partial specialization shall not contain default
|
|
3358 | 3358 | but will be checked when substituting into the partial specialization.
|
3359 | 3359 | \end{note}
|
3360 | 3360 |
|
3361 |
| -\rSec3[temp.class.spec.match]{Matching of partial specializations} |
| 3361 | +\rSec3[temp.spec.partial.match]{Matching of partial specializations} |
3362 | 3362 |
|
3363 | 3363 | \pnum
|
3364 | 3364 | When a template is used in a context that requires an instantiation of
|
|
3375 | 3375 | generated from that partial specialization.
|
3376 | 3376 | \item
|
3377 | 3377 | If more than one matching partial specialization is found,
|
3378 |
| -the partial order rules\iref{temp.class.order} are used to determine |
| 3378 | +the partial order rules\iref{temp.spec.partial.order} are used to determine |
3379 | 3379 | whether one of the partial specializations is more specialized than the
|
3380 | 3380 | others.
|
3381 | 3381 | If such a partial specialization exists,
|
|
3446 | 3446 | The template arguments of a partial specialization are deduced from the arguments
|
3447 | 3447 | of the primary template.
|
3448 | 3448 |
|
3449 |
| -\rSec3[temp.class.order]{Partial ordering of partial specializations} |
| 3449 | +\rSec3[temp.spec.partial.order]{Partial ordering of partial specializations} |
3450 | 3450 |
|
3451 | 3451 | \pnum
|
3452 | 3452 | \indextext{more specialized!class template}%
|
|
3522 | 3522 | because \tcode{B} is more specialized than \tcode{A}.
|
3523 | 3523 | \end{example}
|
3524 | 3524 |
|
3525 |
| -\rSec3[temp.class.spec.mfunc]{Members of class template partial specializations} |
| 3525 | +\rSec3[temp.spec.partial.member]{Members of class template partial specializations} |
3526 | 3526 |
|
3527 | 3527 | \pnum
|
3528 | 3528 | The template parameter list of a member of a class template partial
|
|
4270 | 4270 | A concept cannot be
|
4271 | 4271 | explicitly instantiated\iref{temp.explicit},
|
4272 | 4272 | explicitly specialized\iref{temp.expl.spec},
|
4273 |
| -or partially specialized\iref{temp.class.spec}. |
| 4273 | +or partially specialized\iref{temp.spec.partial}. |
4274 | 4274 | \end{note}
|
4275 | 4275 |
|
4276 | 4276 | \pnum
|
|
0 commit comments