Skip to content

Commit 6da1966

Browse files
committed
Additional review feedback.
1 parent 1b35012 commit 6da1966

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

partial-spec-wording.html

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,11 @@ <h1>Generalized wording for partial specializations</h1>
143143
<table class="frontmatter" border="0" cellpadding="0" cellspacing="0" width="619">
144144
<tr>
145145
<td align="left" valign="top">Document number:</td>
146-
<td>D2096R1</td>
146+
<td>D2096R2</td>
147147
</tr>
148148
<tr>
149149
<td align="left" valign="top">Date:</td>
150-
<td>2020-03-23</td>
150+
<td>2020-08-17</td>
151151
</tr>
152152
<tr>
153153
<td align="left" valign="top">Project:</td>
@@ -174,6 +174,10 @@ <h2><a id="TableOfContents">Table of Contents</a></h2>
174174
</ol>
175175

176176
<h2><a id="RevisionHistory">Revision History</a></h2>
177+
<h3>Revision 2 - 2020-08-17</h3>
178+
<ul>
179+
<li>Incorporated additional review feedback from CWG telecon.</li>
180+
</ul>
177181
<h3>Revision 1 - 2020-03-23</h3>
178182
<ul>
179183
<li>Incorporated review feedback from CWG telecon.</li>
@@ -231,7 +235,7 @@ <h2><a id="Wording">Wording</a></h2>
231235

232236
<p>Modify &sect;13.7 <a class="stdref">temp.decls</a> paragraph 1:</p>
233237
<blockquote class="std">
234-
<div><ins><span>[&nbsp<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>[&nbsp<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.
235239
<div><del><div class="stdexample"><pre class="example">
236240
<code>template&lt;class T1, class T2, int I&gt; class A&lt;T1, T2, I&gt; { }; // <span class="comment">error</span>
237241
template&lt;class T1, int I&gt; void sort&lt;T1, I&gt;(T1 data[I]); // <span class="comment">error</span></code>
@@ -246,7 +250,7 @@ <h2><a id="Wording">Wording</a></h2>
246250

247251
<p>Modify &sect;13.7.5 <a class="stdref">temp.class.spec</a> paragraph 1:</p>
248252
<blockquote class="std">
249-
<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>.
250254
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>.
251255
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 (<a class="stdref">temp.class.spec.match</a>).
252256
The primary template shall be declared before any<ins> partial</ins> specializations of that template.
@@ -268,9 +272,8 @@ <h2><a id="Wording">Wording</a></h2>
268272
<blockquote class="std">
269273
<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>.
270274
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> (<a class="stdref">temp.dep.type</a>)</ins>.
272276
<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>
274277
<span class="stdexample">The template argument list for the primary template in the example above is <code>&lt;T1, T2, I&gt;</code>.</span>
275278
<div class="stdnote">The template argument list cannot be specified in the primary template declaration.
276279
For example,
@@ -373,15 +376,15 @@ <h2><a id="Wording">Wording</a></h2>
373376
<p>Modify &sect;13.7.8 <a class="stdref">temp.concept</a> paragraph 5:</p>
374377
<blockquote class="std">
375378
<div>A concept is not instantiated (<a class="stdref">temp.spec</a>).
376-
<span class="stdnote">A <del>concept-id</del><ins><var>concept-id</var></ins> (<a class="stdref">temp.names</a>) is evaluated as an expression.
379+
<span class="stdnote">A concept-id (<a class="stdref">temp.names</a>) is evaluated as an expression.
377380
A concept cannot be explicitly instantiated (<a class="stdref">temp.explicit</a>), explicitly specialized (<a class="stdref">temp.expl.spec</a>), or partially specialized<ins> (<a class="stdref">temp.class.spec</a>)</ins>.</span></div>
378381
</blockquote>
379382

380383
<p>Modify &sect;13.8.2.1 <a class="stdref">temp.dep.type</a> paragraph 1:</p>
381384
<blockquote class="std">
382385
<div>A name refers to the <dfn>current instantiation</dfn> if it is
383386
<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> (<a class="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 (<a class="stdref">class.pre</a>) of the class template or nested class,</li>
385388
<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>&lt;&gt;</code> (or an equivalent template alias specialization),</li>
386389
<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>
387390
<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>&lt;&gt;</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 (<a class="stdref">temp.variadic</a>) whose pattern is the name of the template parameter pack.</li>

0 commit comments

Comments
 (0)