|
116 | 116 | In a function template declaration, the \grammarterm{unqualified-id} of the
|
117 | 117 | \grammarterm{declarator-id} shall be a name.
|
118 | 118 | \begin{note}
|
119 |
| -In a class template declaration, if the \grammarterm{class-name} |
| 119 | +In a class or variable template declaration, if the |
| 120 | +declared name |
120 | 121 | is a
|
121 | 122 | \grammarterm{simple-template-id},
|
122 | 123 | the declaration declares a partial specialization\iref{temp.spec.partial}.
|
|
135 | 136 | \indextext{template name!linkage of}%
|
136 | 137 | A specialization (explicit or implicit) of one template is
|
137 | 138 | distinct from all specializations of any other template.
|
138 |
| -A template, a template explicit specialization\iref{temp.expl.spec}, and a class |
139 |
| -template partial specialization shall not have C language linkage. |
| 139 | +A template, an explicit specialization\iref{temp.expl.spec}, and a |
| 140 | +partial specialization shall not have C language linkage. |
140 | 141 | \begin{note}
|
141 | 142 | Default arguments for function templates and for member functions of
|
142 | 143 | class templates are considered definitions for the purpose of template
|
|
3129 | 3130 |
|
3130 | 3131 | \pnum
|
3131 | 3132 | \indextext{specialization!class template partial}%
|
3132 |
| -A partial specialization of a class template provides an alternative definition |
| 3133 | +A partial specialization of a template provides an alternative definition |
3133 | 3134 | of the template that is used instead of the primary definition when the
|
3134 | 3135 | arguments in a specialization match those given in the partial
|
3135 | 3136 | specialization\iref{temp.spec.partial.match}.
|
3136 | 3137 | A declaration of the primary template shall precede any specialization of
|
3137 | 3138 | that template.
|
3138 |
| -A partial specialization shall be reachable from any use of a class template |
| 3139 | +A partial specialization shall be reachable from any use of a template |
3139 | 3140 | specialization that would make use of the partial specialization as the result of
|
3140 | 3141 | an implicit or explicit instantiation; no diagnostic is required.
|
3141 | 3142 |
|
3142 | 3143 | \pnum
|
3143 | 3144 | Two partial specialization declarations declare the same entity
|
3144 | 3145 | if they are partial specializations of the same template and have equivalent
|
3145 | 3146 | \grammarterm{template-head}s and template argument lists\iref{temp.over.link}.
|
3146 |
| -Each class template partial specialization is a distinct template and |
3147 |
| -definitions shall be provided for the members of a template partial |
3148 |
| -specialization\iref{temp.class.spec.mfunc}. |
| 3147 | +Each partial specialization is a distinct template. |
3149 | 3148 |
|
3150 | 3149 | \pnum
|
3151 | 3150 | \begin{example}
|
|
3181 | 3180 | \end{example}
|
3182 | 3181 |
|
3183 | 3182 | \pnum
|
3184 |
| -The template parameters are specified in the angle bracket enclosed list |
| 3183 | +The template parameters of a template are specified in the angle bracket enclosed list |
3185 | 3184 | that immediately follows the keyword \keyword{template}.
|
3186 | 3185 | The template argument list of a partial specialization is
|
3187 | 3186 | the \grammarterm{template-argument-list} of the \grammarterm{class-name}.
|
|
3452 | 3451 | \rSec3[temp.spec.partial.member]{Members of class template partial specializations}
|
3453 | 3452 |
|
3454 | 3453 | \pnum
|
3455 |
| -A class template partial specialization is a distinct template. |
3456 | 3454 | The members of the class template partial specialization are
|
3457 | 3455 | unrelated to the members of the primary template.
|
3458 | 3456 | Class template partial specialization members that are used in a way that
|
|
4789 | 4787 | the name of the nested class referenced as a member of the
|
4790 | 4788 | current instantiation, or
|
4791 | 4789 | \item
|
4792 |
| -in the definition of a partial specialization |
4793 |
| -or a member of a partial specialization, the name of |
| 4790 | +in the definition of a class template partial specialization |
| 4791 | +or a member of a class template partial specialization, the name of |
4794 | 4792 | the class template followed by a template argument list
|
4795 | 4793 | equivalent to that of the partial specialization\iref{temp.spec.partial}
|
4796 | 4794 | enclosed in \tcode{<>} (or an equivalent template alias specialization).
|
|
0 commit comments