You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<div><ins><span>[ <i>Note:</i></span></ins>A <var>template-id</var><del>,</del><ins>(</ins>that is, <del>the</del><ins>a</ins><var>template-name</var> followed by a <var>template-argument-list</var><ins>)</ins><del>shall not</del><ins>cannot</ins> be <del>specified in the declaration of</del><ins>the declared name of</ins> a primary template declaration.
238
+
<div><ins><span>[ <i>Note:</i></span></ins>A <var>template-id</var><del>,that is, the <var>template-name</var> followed by a <var>template-argument-list</var>shall not</del><ins>cannot</ins> be <del>specified in the declaration of</del><ins>the declared name of</ins> a primary template declaration.
<div>A <dfn>primary<del> class</del> template</dfn> declaration is one in which the<del> class template name</del><ins><var>template-name</var></ins> is <del>an identifier</del><ins>not followed by a <var>template-argument-list</var></ins>.
253
+
<div>A <dfn>primary<del> class</del> template</dfn> declaration is one in which the<del> class template</del> name<ins> of the template</ins> is <del>an identifier</del><ins>not followed by a <var>template-argument-list</var></ins>.
250
254
A template declaration in which the<del> class</del> template name is a <var>simple-template-id</var> is a <dfn>partial specialization</dfn> of the<del> class</del> template named in the <var>simple-template-id</var><ins>, which shall be a class or variable template</ins>.
251
255
A partial specialization of a<del> class</del> template provides an alternative definition of the template that is used instead of the primary definition when the arguments in a specialization match those given in the partial specialization (<aclass="stdref">temp.class.spec.match</a>).
252
256
The primary template shall be declared before any<ins> partial</ins> specializations of that template.
<div>The template parameters<ins> of a template</ins> are specified in the angle bracket enclosed list that immediately follows the keyword <code>template</code>.
270
274
For partial specializations, the template argument list is explicitly written immediately following the<del> class</del> template name.
271
-
For primary templates, this list is implicitly described by the template parameter list.
275
+
For primary templates, this list is implicitly described by the template parameter list<ins> (<aclass="stdref">temp.dep.type</a>)</ins>.
272
276
<del>Specifically, the order of the template arguments is the sequence in which they appear in the template parameter list.</del>
273
-
<ins>For each template parameter <code>P<sub>i</sub></code>, there is a corresponding template argument <code>A<sub>i</sub></code> consisting of the <var>type-id</var> or <var>id-expression</var> naming <code>P<sub>i</sub></code>.</ins>
274
277
<spanclass="stdexample">The template argument list for the primary template in the example above is <code><T1, T2, I></code>.</span>
275
278
<divclass="stdnote">The template argument list cannot be specified in the primary template declaration.
<div>A concept is not instantiated (<aclass="stdref">temp.spec</a>).
376
-
<spanclass="stdnote">A <del>concept-id</del><ins><var>concept-id</var></ins> (<aclass="stdref">temp.names</a>) is evaluated as an expression.
379
+
<spanclass="stdnote">A concept-id (<aclass="stdref">temp.names</a>) is evaluated as an expression.
377
380
A concept cannot be explicitly instantiated (<aclass="stdref">temp.explicit</a>), explicitly specialized (<aclass="stdref">temp.expl.spec</a>), or partially specialized<ins> (<aclass="stdref">temp.class.spec</a>)</ins>.</span></div>
<div>A name refers to the <dfn>current instantiation</dfn> if it is
383
386
<ul>
384
-
<li>in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, the <del>injected-class-name</del><ins><var>injected-class-name</var></ins> (<aclass="stdref">class.pre</a>) of the class template or nested class,</li>
387
+
<li>in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, the injected-class-name (<aclass="stdref">class.pre</a>) of the class template or nested class,</li>
385
388
<li>in the definition of a primary class template or a member of a primary class template, the name of the class template followed by the template argument list of the primary template (as described below) enclosed in <code><></code> (or an equivalent template alias specialization),</li>
386
389
<li>in the definition of a nested class of a class template, the name of the nested class referenced as a member of the current instantiation, or</li>
387
390
<li>in the definition of a<ins> class template</ins> partial specialization or a member of a<ins> class template</ins> partial specialization, the name of the class template followed by the template argument list of the partial specialization enclosed in <code><></code> (or an equivalent template alias specialization). If the <var>n</var><sup>th</sup> template parameter is a template parameter pack, the <var>n</var><sup>th</sup> template argument is a pack expansion (<aclass="stdref">temp.variadic</a>) whose pattern is the name of the template parameter pack.</li>
0 commit comments