Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r51561 - sandbox/committee/LWG
From: bdawes_at_[hidden]
Date: 2009-03-03 08:29:00


Author: bemandawes
Date: 2009-03-03 08:28:56 EST (Tue, 03 Mar 2009)
New Revision: 51561
URL: http://svn.boost.org/trac/boost/changeset/51561

Log:
cleanup
Text files modified:
   sandbox/committee/LWG/0xCD1_Comments.html | 42573 ++++++++++++++++-----------------------
   1 files changed, 18088 insertions(+), 24485 deletions(-)

Modified: sandbox/committee/LWG/0xCD1_Comments.html
==============================================================================
--- sandbox/committee/LWG/0xCD1_Comments.html (original)
+++ sandbox/committee/LWG/0xCD1_Comments.html 2009-03-03 08:28:56 EST (Tue, 03 Mar 2009)
@@ -1,24486 +1,18089 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
- <TITLE>C++0x CD1 NB Comments</TITLE>
- <META NAME="GENERATOR" CONTENT="Microsoft FrontPage 5.0">
- <META NAME="AUTHOR" CONTENT="dow">
- <META NAME="CREATED" CONTENT="20090221;19590000">
- <META NAME="CHANGEDBY" CONTENT=" Barry E Hedquist">
- <META NAME="CHANGED" CONTENT="20090222;18460000">
- <META NAME="DESCRIPTION" CONTENT="FORM (ISO)">
- <STYLE TYPE="text/css">
- <!--
- @page { size: 11.69in 8.27in; margin-right: 0.59in }
- P { margin-bottom: 0.08in; direction: ltr; color: #000000; text-align: left; widows: 2; orphans: 2 }
- P.western { font-family: "Arial", sans-serif; font-size: 10pt; so-language: en-US }
- P.cjk { font-family: "Times New Roman", serif; font-size: 10pt }
- P.ctl { font-family: "Arial", sans-serif; font-size: 10pt; so-language: ar-SA }
- TT { font-family: "DejaVu Sans Mono", "Consolas", monospace }
- -->
- </STYLE>
-</HEAD>
-<BODY LANG="en-US" TEXT="#000000" DIR="LTR">
-<DIV TYPE=HEADER>
- <TABLE BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0 style="border-collapse: collapse">
- <TR VALIGN=TOP>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt">1</FONT></P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt">2</FONT></P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt">3</FONT></P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt">4</FONT></P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt">5</FONT></P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt">6</FONT></P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt">7</FONT></P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P>
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=1 STYLE="font-size: 8pt"><B>MB</B></FONT><SUP><FONT SIZE=1 STYLE="font-size: 6pt"><B>1</B></FONT></SUP><FONT SIZE=1 STYLE="font-size: 8pt"><B><BR></B></FONT></FONT><BR>
- </P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt"><B>Clause
- No./<BR>Subclause No./<BR>Annex<BR></B>(e.g.
- 3.1)</FONT></P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt"><B>Paragraph/<BR>Figure/Table/Note<BR></B>(e.g.
- Table 1)</FONT></P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Type
- of com-ment</B></FONT><SUP><FONT SIZE=1 STYLE="font-size: 6pt"><B>2</B></FONT></SUP></FONT></P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt"><B>Comment (justification for
- change) by the MB</B></FONT></P>
- </TD>
- <TD>
- <P>
- <FONT SIZE=1 STYLE="font-size: 8pt"><B>Proposed change by the MB</B></FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=CENTER STYLE="margin-top: 0.07in; margin-bottom: 0.04in; page-break-inside: avoid">
- <FONT SIZE=1 STYLE="font-size: 8pt"><B>Disposition</B></FONT></P>
- <P>
- <BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">General
- Comment</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ge</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Interactions
- between several new features appear obscure, and very few examples
- are offered to guide understanding of the formal text on
- interaction between these new additions.</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">We
- worry about the complexity of the programming model so created.</FONT></P>
- <P STYLE="margin-top: 0.04in"><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US 1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">1-16</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ge/te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The active issues identified
- in WG21 N2803, C++ Standard Core Language Active Issues, must be
- addressed and appropriate action taken.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT COLOR="#000080" SIZE="2" style="font-size: 11pt"><U>http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Appropriate action would
- include making changes to the CD, identifying an issue as not
- requiring a change to the CD, or deferring the issue to a later
- point in time.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">CA-1</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">There
- are quite a number of defects for the current CD recorded in
- SC22/WG21-N2803 and N2806</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Consider
- these comments and update ISO/IEC CD 14882 accordingly</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1
- through 16</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ge/te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-1
- Consider addressing a significant part of the unresolved core
- language issues presented in WG21 document N2791 &quot;C++
- Standard Core Language Active Issues, Revision 59&quot;, available
- at
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2791.html
- .</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">CH
- 2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">all</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- issues on the issues lists shall be addressed before the standard
- becomes final.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US 3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">all</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Latin
- abbreviations are presented incorrectly.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Italicize
- all Latin abbreviations, append commas after each occurrence of
- <I>i.e</I>. and <I>e.g.</I>, and remove extraneous space after
- each such abbreviation.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1
- [intro.scope]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">C++
- is split at the end of line.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US 4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">There
- is a bad line break in &quot;C++&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK
- 1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">List
- of additional facilities over C has been extended with this
- standard, so should be mentioned in the introductory material.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the following to the list in 1.1p2: atomic operations concurrency
- alignment control user-defined literals attributes </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 4</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.2
- [intro.refs]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Is
- the lack of reference to ISO/CEI 9899/AC3:2007 voluntary?</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK
- 2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><SPAN LANG="en-US">We
- recommend taking the latest update to each listed standard, yet
- the C standard is quite deliberately held back to the 1990 version
- without comment.+</SPAN></FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">...
- not sure ...</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK
- 3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1.3.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- definition of an argument does not seem to cover many assumed use
- cases, and we believe that is not intentional.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Revise
- the definition of argument to answer question such as: Are
- lambda-captures arguments? Are type names in a throw-spec
- arguments? 'Argument' to casts, typeid, alignof, alignas, decltype
- and sizeof? why in x[arg] : arg is not an agrument, but the value
- forwarded to operator[]() is ? Does not apply to operators as
- call-points not bounded by parenthises ? Similar for copy
- initialization and conversion? what are Deduced template
- 'arguments'? what are 'default arguments'? can attributes have
- arguments? what about concepts, requires clauses and concept_map
- instantiations? What about user-defined literals where parens are
- not used?</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK
- 4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1.3.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- definition is essentially worthless, as it says nothing about what
- distinguished a diagnostic message from other output messages
- provided by the implementation</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">...
- add something about the diagnostic message being a message issues
- by the implementation when translating a program that violates the
- rules of the standard. ...</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 5</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.3.4
- [defns.dynamic.type]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">&quot;The
- dynamic type of an rvalue expression is its static type.&quot; Is
- this true with rvalue references?</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US 5</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.3.5</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- wording is unclear as to whether it is the input or the
- implementation &quot;that is not a well-formed program&quot;.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Reword
- to clarify that it is the input that is here considered not
- well-formed.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 6</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.3.6
- [defns.impl.defined]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">There
- is a page break between the title and the paragraph.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.3.13
- [defns.undefined]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">[intro.execution]/5
- explicitly allows non causal undefined behaviour,</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Adding
- it to the note outlying possible undefined behaviours.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US 6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">1.3.14</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ge</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Unspecified behavior does not
- clearly state whether or not undefined behavior is permitted. (The
- standard says that &quot;usually, the range of possible behaviors
- is delineated&quot;, but what happens if the range is not
- delineated? Is a crash, or worse, allowed?)</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clearly
- state whether or not Unspecified behavior includes undefined
- behavior.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 8</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.4
- [intro.compliance]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">8</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- paragraph as its stands seems to require that violations of the
- ODR (which make a program ill-formed) are required to be diagnosed
- if the program also uses an extension which defines some cases of
- ODR.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK
- 5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Missing
- checklist of implementation defined behaviour (see ISO/IEC TR
- 10176, 4.1.1p6)</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- a new annex with the missing checklist</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK
- 6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Missing
- annex describing potential incompatibility to previous edition of
- the standard (see ISO/IEC TR 10176, 4.1.1p9)</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- a new annex with the missing documentation. See n2733(08-0243) for
- a starting point</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.5</FONT></P>
- </TD>
- <TD>
- <P> <FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">There
- is no mention of Clause 17.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Include
- Clause 17 among the list of Clauses that specify the Standard
- Library.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 8</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.5</FONT></P>
- </TD>
- <TD>
- <P> <FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- paragraph omits to mention concepts and concept maps among its
- list of entities defined in the Standard Library.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Mention
- concepts and concept maps among the list of entities.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US 9</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">1.6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The syntax description does
- not account for lines that wrap.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US 10</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">1.7</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT> <FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- term thread is used before defined.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt">
- <FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#000000">R</FONT><FONT SIZE=2 STYLE="font-size: 9pt">eference
- 1.10 [intro.multithread].</FONT></FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 11</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 3 last sent.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- phrase &ldquo;threads of execution&rdquo; should be accompanied by
- a reference to [intro.multithread].</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Insert
- the recommended reference.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 12</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 3 first sent.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">A
- memory location is not an object as the sentence claims.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- that a memory location &ldquo;holds&rdquo; an object rather than
- that it &ldquo;is&rdquo; an object.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 13</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 3 last sent.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">It
- is unclear what is meant by memory locations that are &quot;separate&quot;:
- are they distinct? non-overlapping? how much &quot;separation&quot;
- is needed?</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- either a better definition of &ldquo;separate&rdquo; or reword
- (this and subsequent paragraphs) to avoid this term.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 14</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 4</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- phrase &quot;no matter what the sizes of the intervening
- bit-fields happen to be&quot; contradicts the claim of separation
- &quot;by a zero-length bit-field declaration&quot;.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Delete
- the &ldquo;no matter&hellip;&rdquo; phrase, or resolve the
- contradiction in a different way.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 15</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 5</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">A
- struct does not &ldquo;contain&rdquo; memory locations.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Reword
- so that a struct is &ldquo;held in&rdquo; one or more memory
- locations.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 16</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.9</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- discussion of observable behavior in 1.9 is not consistent with
- the addition of threads to the language. Volatile reads and
- writes and other observable actions no longer occur in a single
- &quot;sequence&rdquo;.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Remove/replace
- various occurrences of &quot;sequence&quot; in 1.9.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK
- 8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1.9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">With
- parallel execution there is no longer the idea of a single
- execution sequence for a program. Instead, a program may be
- considered a set of exectution sequences.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Update
- first sentance as: A conforming implementation executing a
- well-formed program shall produce the same observable behavior as
- one of the possible SETS OF execution sequences of the
- corresponding instance of the abstract machine CONFORMING TO THE
- MEMORY MODEL (1.10) with the same program and the same input.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK
- 7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1.9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Does
- the term 'sequence' imply all reads/writes through volatile memory
- much be serialized, and cannot occur in parallel on truly parallel
- hardware? Allow for multiple concurrent sequences where each
- sequence is constrained by this observable behaviour rule, and
- multiple sequences are constrained by the memory model and
- happens-before relationships defined in 1.10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- 'sequence' with 'sequences'.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 9</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.9
- [intro.execution]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">16</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">This
- example use int *v while the other examples seems to use notation
- like int* v.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 17</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1.10</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- definition of &ldquo;thread&rdquo; is poor, and assumes the user
- already knows what multi-threaded means (probably true!). In
- particular, it does not deal adequately with the concept that all
- threads share the same address space.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- first sentence of para 1 as follows:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Under
- a hosted implementation, a C++ program can have more
- than one thread of
- execution (a.k.a. thread)
- running concurrently.
- Each thread is a single flow of control within a program.
- Anything whose address may be determined by a thread, including
- but not limited to static objects, storage obtained via new or by
- any dynamic allocator, directly addressable storage obtained
- through implementation-defined functions, and automatic variables,
- are accessible to all threads in the same program.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK
- 9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2,
- 4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Undefined
- behaviour is a drastic way to silently ignore minor issues. The
- cases in this paragraph could be easily defined. In this case opt
- for conditionally supported behaviour, which mandates a diagnostic
- if the compiler is not prepared to handle the syntax consistently.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- undefined behaviour with conditionally supported behavior.
- Conditional behaviour may be implementation defined, although
- suggest there is a reasonable default in each case. For creating a
- universal-character name, splice text to create a
- universal-character. In the case of a file ending without a
- newline, treat as if the newline was implictly added, with an
- empty line to follow if the last character was a back-slash.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK
- 10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Implementation
- defined seems unnecessarily burdensome for negligible gain. I am
- yet to see code that depended on whether non-empty sequences of
- whitespace were concatenated. Better left unspecified.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">How
- the compiler treats non-empty sequences of whitespace should be
- left unspecified, rather than implementation-defined.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 10</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2.1
- [lex.phases]/5 and 2.2 [lex.charset]/3</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">[defns.multibyte]
- &quot;the extended character set.&quot;</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">[lex.charset]/3
- cited below implies that there is an extended character set per
- locale.</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">[lex.phases]/5
- &quot;Each [...] universal-character-name [...] is converted to
- the corresponding member of the execution character set&quot;</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">[lex.charset]/3
- &quot;The values of the members of the execution character sets
- are implementation defined, and any additional members are
- locale-specific.&quot;</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Together
- they seem to imply that what is locale-specific is if a value is
- valid or not for the current locale, not the representation of a
- given universal character.</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">This
- is not the behaviour of at least some compilers I've access to
- which are allowing different codes for the same abstract character
- in different locale. During phase 5, they are using an
- implementation defined char set.</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Trigraphs
- are a complicated solution to an old problem, that cause more
- problems than they solve in the modern environment. Unexpected
- trigraphs in string literals and occasionally in comments can be
- very confusing for the non-expert.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Deprecate
- the whole of 2.3 and move it to appendix D.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.4,
- 2.8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- undefined behaviour in token concatenation is worrying and we
- believe hard to justify. An implementation should either support
- this in a defined way, or issue a diagnosic. Documenting existing
- practice should not break existing implementations, although
- unconditionally requiring a diagnostic would lead to more portable
- programs.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- undefined behaviour with conditionally supported behaviour with
- implementation defined semantics.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 18</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2.4</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- paragraph begins with an empty line.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Delete
- the empty line.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 11</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2.4
- [lex.pptokens]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">There
- are spurious empty lines.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 12</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2.5
- [lex.digraph] and 2.11 [lex.key]/2</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- alternative representations are reserved as such even in
- attribute. Is that what is wanted?</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FI
- 2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2.5</FONT></P>
- </TD>
- <TD>
- <P LANG="fi-FI" STYLE="margin-top: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Add
- eq, for spelling out == in order to distinguish it from the
- assignment operator.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">See
- eq-keyword.doc, eq-keyword.ppt</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">13</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- text is confusing in isolation, as it implies pp-numbers do not
- have a value in translation phase 4 when evaluating #if
- preprocessor expressions.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a note with a cross-refernce to 16.1 that a pp-number may briefly
- acquire a value during translation phase 4 while evaluating #if
- expressions.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">14</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">table
- 3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- table is nearly sorted, but not quite. It was sorted in previous
- versions of the standard.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Sort
- the table.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2.11</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Keywords
- in the table are listed disorderly. Also, a part of a frame of the
- table is not drawn.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Sort
- it in alphabetical order. Complete the table frame.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 19</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2.13.1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 5, rows &ldquo;l or L&rdquo; and &ldquo;ll or LL&rdquo;</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- final entry in the last column (&ldquo;unsigned long int&rdquo;)
- is incorrect.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- the incorrect entries by &ldquo;unsigned long long int&rdquo;.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 20</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">2.13.1,
- 2.13.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Long
- strings of digits in literals are a continuing problem in the
- production and maintenance of programs.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">Adopt
- the 1983 technology of Ada and use underscores to separate digits.
- </FONT><FONT COLOR="#000080"><U>http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2281.html</U></FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">15</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.13.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Inconsistency
- between definition of a multicharacter literal and a wide
- character literal containing multiple c-chars.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Define
- the term multicharacter wide literal for a wchar_t literal
- containing multiple elements, and specify its type is integer (or
- wider)</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">16</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.13.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Not
- immediately clear why the question mark needs escaping. A note
- would help.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a note explaining that the ? character may need escaping to avoid
- accidentally creating a trigraph.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">2.13.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 2</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">nd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Typo, R&quot;...&quot; should
- be R&quot;[...]&quot;</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Correct
- typo.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">2.13.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">nd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">We
- think that the explanation of d-char-sequence is not enough.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add the following.</FONT></P>
- <OL>
- <LI><P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 0; orphans: 0">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add the following to the
- explanation of d-char-sequence, more easily to understand.</FONT></P>
- </OL>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...prefix is a raw string
- literal.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The d-char-sequence is used as
- delimiter. </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The terminating
- d-char-sequence of ...</FONT></P>
- <OL START=2>
- <LI><P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in; widows: 0; orphans: 0">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add the following note that
- there are square brackets in r-char-sequence.</FONT></P>
- </OL>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">[Note:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.83in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">char
- foo[] = R&rdquo;<I>delimiter</I>[[a-z]
- specifies a range which matches any lowercase letter from &quot;a&quot;
- to &quot;z&quot;.]<I>delimiter</I>&rdquo;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">the expression statement
- behaves exactly the same as</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.83in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">char foo[]=&quot;[a-z]
- specifies a range which matches any lowercase letter from \&quot;a\&quot;
- to \&quot;z\&quot;.&quot;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.69in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">- end note]</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.69in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">2.13.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">rd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 1st line of example</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo. Lack of a necessary
- backslash in the first line of the example as follows:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const char *p = R&quot;[a</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">b</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">c]&quot;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const char *p = R&quot;[a\</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">b</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">c]&quot;;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Correct
- typo.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 21</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2.13.4</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- paragraph, marked as a Note, contains an embedded example not
- marked as such.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Denote
- the code (and perhaps also its commentary) as an Example.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 22</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2.13.4</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- code does not have the effect predicted by its accompanying
- narrative.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Append
- a backslash to the first line of the code.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 5</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">2.13.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">11</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, Table 7</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">It
- is not explicit how to combine raw-string and non-raw-string.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Add
- rules containing raw-string in the table 7.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 13</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2.13.4
- [lex.string]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Shouldn't
- the assert be</FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">assert(std::strcmp(p,
- &quot;a\nb\nc&quot;) == 0);</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">17</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.13.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- would be preferred for attempts to modify string literals to be
- diagnosable errors. This is not possible due to the deprecated
- implicit conversion to pointer to null-terminated character
- sequence of non-const characters. If this deprecated conversion
- were remove (see other comments) then string literals are always
- accessed through const types, and the compiler can enforce the no
- modification rule. The only exception would be using const_cast to
- cast away constness, but this is already covered under the
- const_cast rules so needs no further detail here.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">(asssuming
- deprecated conversion to non-const array is removed or can be
- turned off) Strike the sentence on undefined behaviour.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">18</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.13.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- addition of static_assert (7p4) to the language raises the need to
- concatenate string representations of integral constant
- expressions (typically from a sizeof or alignof expression) with
- narrow string literals to provide an informative error message.
- There is no need to support arbitrary constant expressions and
- especially not floating point values or formatting flags.
- Likewise, the need is purely to support static_assert so only
- narrow string literal support is required, although generalizing
- to other literal types would be useful.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Define
- a syntax to support string-ization of integral constant
- expressions in a form eligible for string literal concatenation,
- 2.13.4p6. Suggested syntax: I&quot; integral-constant-expression
- &quot;. There is no raw variant, although it could combine with
- type specifier in the same way that the R prefix does, supporting
- u8I, uI, UI and LI.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">19</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2.13.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- grammar for string literal is becoming unwieldy and could easily
- be refactored into the type optional specifier and the string
- contents.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Refactor
- string-literal grammar as: (note - current Drupal view loses
- formatting which is vital to clearly read the grammar)
- string-literal: string-literal-type-specifierOPT
- string-literal-body string-literal-type-specifier: one of u8 u U L
- string-literal-body: &quot; s-char-sequenceOPT &quot; R raw-string</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 14</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3
- [basic]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">&quot;In
- general it is necessary to determine whether a name denotes one of
- these entities before parsing the program that contains it.&quot;</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Would
- prefer</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">&quot;...
- before continuing to parse the program that contains it.&quot;</FONT></P>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">or
- even </FONT>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">&quot;...
- to complete the parsing of the program that contains it.&quot;</FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">as
- some names denotes entities declared after the first occurrence.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 15</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3
- [basic]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">8</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">/operator-function-id/,
- /conversion-function-id/, /template-id/ are followed by a space
- and then a &quot;s&quot; while usually such production names
- aren't followed by a space when put in plural (see /identifier/).</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK</FONT></P>
- <P> <FONT SIZE=2 STYLE="font-size: 9pt">20</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Chapter
- 3 (&quot;Basic concepts&quot;) provides common definitions used in
- the rest of the document. Now that we have concepts as a primary
- feature, the title of this chapter can be confusing as it does not
- refer to the language feature but to definitions used in the
- document.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- the title to &quot;Basic definitions&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">21</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Concepts
- is now the name of a specific feature of the language, the term
- now risks confusion and ambiguity when used in the more general
- sense.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Rename
- the chapter Basic ???. THe note in p2 specifically needs similar
- rewording</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">22</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">References
- are frequently considered variables, but this definition only
- applies to objects.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- &quot;or reference&quot; after both uses of &quot;object&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">23</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">alias-declarations
- are not definitions and should be added to the list</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- alias-declaration after typedef declaration.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">24</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- current words suggest the declaration of a static integral
- constant data member of a class cannot be a definition. Trying to
- fix this wording in-place will be verbose and risk raising more
- confusion than it solves, so suggest a footnote to call out the
- special case</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a footnote attached to the static data membmer rule: *static data
- member delcarations of intergral type may also be definitions if a
- constant integral expression is provided for an initializer.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">25</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Example
- is misleading as implicitly defined default constructor uses
- default initialization, not value initialization, for non-static
- data members. In the case of std::String this makes no difference,
- but it makes a big difference for fundamental types and pointers.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the : s() from the illustrated default constructor: struct C {
- std::string s; C() { } C(const C&amp; x): s(x.s) { } C&amp;
- operator=(const C&amp; x) { s = x.s; return *this; } ~C() { } };</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">26</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">THe
- one definition rule should cover references, and unless the term
- 'variable' is extended to cover references the list in this
- paragraph is incomplete.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Either
- include references in the definition of 'variable' (see earlier
- comment) or add reference to the list in this paragraph.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK </FONT>
- </P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">27</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">A
- class type must be complete when catching exceptions, even by
- reference or pointer. See 15.3.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- &quot;when used in an exception-handler (15.3)&quot; to the list.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 16</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3.3
- [Declarative regions and scopes.]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- scope of function parameters is defined, but what is the scope of
- template parameters?</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK</FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">28</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3.3.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Class
- templates are not classes, so we should include this case.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ammend
- &quot;class&quot; to &quot;class or class template&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK</FONT></P>
- <P> <FONT SIZE=2 STYLE="font-size: 9pt">29</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3.3.10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">operators
- and conversion functions do not have names, yet are susceptible to
- 'name hiding' within a class - indeed we rely on this for the
- implicitly declared copy-assignment operator.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the additional phrase &quot;The declaration of an operator or
- conversion function in a derived class (Clause 10) hides the
- declaration of an operator or conversion function of a base class
- of the same operator or type;&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 17</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3.5
- [Program and linkage]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">This
- section does not specify whether concept names have linkage.</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Do
- they or not? If concept names do not have linkage, then a note is
- appropriate, and that would be a bit surprising and curious. What
- is the rationale?</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 30</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- paragraph implies concepts have no linkage (do they need it?) and
- that the entities behind names without linkage cannot be used in
- other scopes. This maybe a bigger problem for concept maps?</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a note to clarify that concepts don't need linkage.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 31</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">What
- is the linkage of names declared inside a namespace, in turn
- declared inside an anonymous namespace? It is not clear why such a
- namespace has no linkage, and there is no language suggesting its
- memmbers should lose linkage with it, which we assume is the
- intended consequence.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- rules for namespaces inside nested namespaces, or remove the
- restriction.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 23</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">3.5</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT> <FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Bad paragraph break.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 18</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3.5
- [basic.link]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- paragraph number is not aligned with the text.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 19</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3.6
- [Start and termination]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">This
- section completely ignores the real world and practical case of
- dynamically linked or loaded libraries. In current computing
- environments, they are ubiquitous and they cannot be ignored in</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">practical
- C++ programs. The Standard</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">should
- address this aspect.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 32</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3.6.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Do
- we really want to allow: constexpr int main() { return 0; } as a
- valid program?</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- constexpr to the list of ill-formed things to annotate main</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 24</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">3.6.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT> <FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">std::quick_exit
- is not referenced.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">Reference
- std::quick_exit as well as std::exit in saying that automatic
- objects are not destroyed. It should </FONT><STRONG><FONT SIZE=2 STYLE="font-size: 9pt">not</FONT></STRONG><FONT SIZE=2 STYLE="font-size: 9pt">
- do so in saying that calling std::quick_exit is undefined from
- within destructors for static or thread duration objects.</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 25</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3.6.3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 2 last sent.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- parenthesized phrase, introduced via &ldquo;i.e.&rdquo; is in the
- nature of an example.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &ldquo;i.e.&rdquo; to &ldquo;e.g.&rdquo;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">3.7.4.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 4</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Lack of a comma right after
- &ldquo;(3.7.2)&rdquo; in the sentence while there are commas after
- any other recitations like &ldquo;(3.7.1)&rdquo;. It is just a
- unification matter.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">[ Note: in particular, a
- global allocation function is not called to allocate storage for
- objects with static storage duration (3.7.1), for objects or
- references with thread storage duration (3.7.2) for objects of
- type std::type_info (5.2.8), or for the copy of an object thrown
- by a throw expression (15.1). -end note ]</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.13in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">[ Note: in particular, a
- global allocation function is not called to allocate storage for
- objects with static storage duration (3.7.1), for objects or
- references with thread storage duration (3.7.2), for objects of
- type std::type_info (5.2.8), or for the copy of an object thrown
- by a throw expression (15.1). -end note ]</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Correct
- typo.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3.7.4.3</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">DE-3
- It is unclear whether the following code has well-defined
- behavior; none of the bullets in the second paragraph seem to
- apply.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">int&amp;
- i = *new int(5);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">delete
- &amp;i;</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- that &amp;i is considered a safely-derived pointer value.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 26</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">3.8</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">1
- and 5</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Use
- of object fields during destruction is excessively and erroneously
- constrained.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">See the attached document
- &quot;Issues with the C++ Standard&quot; under Chapter 3 &quot;Use
- of objects, especially from other threads, during destruction&quot;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 27</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3.9</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 9 first sent.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">There
- is a superfluous/extraneous &ldquo;and&rdquo;.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Delete
- &ldquo;and&rdquo; from the phrase &ldquo;and std::nullptr_t&rdquo;.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 20</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3.9
- [Types]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- phrase 'effective type' is defined and used in a way that is
- incompatible with C99. Such a deliberate incompatible choice of
- terminology is both unfortunate and confusing, given past practice
- of the committee to maintain greater compatibility with C99. We
- strongly suggest that the phrase 'effective type' not be used in
- such an incompatible way.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 7</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">3.9.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">rd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 13</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">over-aligned
- type was added as new notion. So it is preferable to add the link
- after that.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add (3.11) after over-aligned
- type as the link.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT> <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">[
- Note: pointers to over-aligned types</FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#008000">(3.11)</FONT><FONT SIZE=2 STYLE="font-size: 9pt">
- have no special representation, but their range of valid values is
- restricted by the extended alignment requirement. This
- International Standard specifies only two ways of obtaining such a
- pointer: taking the address of a valid object with an over-aligned
- type</FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#008000">(3.11)</FONT><FONT SIZE=2 STYLE="font-size: 9pt">,
- and using one of the runtime pointer alignment functions. An
- implementation may provide other means of obtaining a valid
- pointer value for an over-aligned type</FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#008000">(3.11)</FONT><FONT SIZE=2 STYLE="font-size: 9pt">.&mdash;end
- note ]</FONT></FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 28</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3.9.3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 5 first sent.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- closing braces of the first two sets are preceded by extraneous
- space.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Delete
- the extra spaces.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE
- 4</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">4.2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">p2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-4
- The deprecated conversion from string literals to pointer to
- non-const character types should be limited to those conversions
- and types of string literals that were already present in ISO/IEC
- 14882:2003, or the deprecated conversions should be removed
- entirely.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Consider
- applying the proposed resolution presented in core issue 693 in
- WG21 document N2714 &ldquo;C++ Standard Core Language Active
- Issues, Revision 58&ldquo;, available at
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2714.html
- ; or remove only the conversions to &quot;pointer to char16_t&quot;,
- &quot;pointer to char32_t&quot; in 4.2 paragraph 2 and 15.1
- paragraph 3.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">CH
- 1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">4.9
- and 5.2.9</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">With
- respect to the target type, pointer to members should behave like
- normal pointers (least surprise principle).</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- standard should allow implicit conversions from ``pointer to
- member of <TT><FONT FACE="Arial, sans-serif">T</FONT></TT> of type
- <I>cv </I><TT><FONT FACE="Arial, sans-serif">D</FONT></TT>'' to
- ``pointer to member of <TT><FONT FACE="Arial, sans-serif">T</FONT></TT>
- of type <I>cv </I>B'', where D is of class type and B is a public
- base of D, It should allow explicit conversion the other way
- around.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-5</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">4.11,
- 5.3.1, 5.5</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-5
- Ref-qualification has not been integrated with pointer-to-members.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Review
- implicit conversions (4.11), forming pointer-to-members (5.3.1),
- and dereferencing pointer-to-members (5.5) for type-safety
- concerns in the presence of ref-qualifiers on the member.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 33</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4.13</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">We
- have: &quot;No two signed integer types shall have the same rank
- ...&quot; &quot;the rank of char shall equal the rank of signed
- char&quot; Can we therefore deduce that char may not be signed?</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- the first sentence with &quot;No two signed integer types shall
- have the same rank, even if they have the same representation,
- except that signed char shall have the same rank as char even if
- char is signed (3.9.1/1).&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 34</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4.13</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">6th
- bullet, &quot;the rank of char&quot; - first letter should be
- capitalised for consistency with the other bullets</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- rank of char</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 36</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Primary
- expressions are literals, names, names qualified by the scope
- resolution operator ::, and lambda expressions. The immediately
- following grammar flatly contradicts this - this and (e) are also
- lambda expressions.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Delete
- this paragraph.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 37</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Member
- function templates are not member functions, so should also be
- listed in the 3rd bullet</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- member function templates to the 3rd bullet</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 38</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">this
- might be useful in a few more places than it is permitted,
- specifically in decltype expressions within a class. Two examples
- that would be ill-formed at class scope without changes: typedef
- decltype( *this ) this_type; decltype( [this]{ return
- this-&gt;memfun(); } ) my_lambda;</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">...
- words to follow ...</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 8</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">5.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, Syntax rules</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">In the current syntax
- definition, a scope operator(::) cannot be applied to decltype,
- but it should be. It would be useful in the case to obtain member
- type(nested-type) from an instance as follows:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">vector&lt;int&gt; v;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">decltype(v)::value_type
- i = 0; // int i = 0;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add &ldquo;decltype (
- expression ) :: &ldquo; to nested-name-specifier syntax like
- below.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">nested-name-specifier:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.13in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">type-name ::</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.13in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace-name ::</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.13in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">nested-name-specifier
- identifier ::</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.13in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">nested-name-specifier
- templateopt simple-template-id ::</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.13in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">nested-name-specifieropt
- concept-id ::</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.13in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">decltype ( expression ) ::</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.13in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 9</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">It would be preferable that
- &ldquo;&amp;&amp;&rdquo; could be specified in a lambda expression
- to declare move capture.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Here is an example from N2709.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;typename F&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::unique_future&lt;typename
- std::result_of&lt;F()&gt;::type&gt; spawn_task(F f){</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- std::result_of&lt;F()&gt;::type result_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">struct local_task {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::promise&lt;result_type&gt;
- promise;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">F func;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">local_task(local_task const&amp;
- other)=delete;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">local_task(F func_):</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">func(func_)</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">local_task(local_task&amp;&amp;
- other):</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">promise(std::move(other.promise)),</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">f(std::move(other.f))</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void operator() {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">try</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">promise.set_value(f());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">catch(...)</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">promise.set_exception(std::current_exception());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">local_task task(std::move(f));</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::unique_future&lt;result_type&gt;
- res(task.promise.get_future());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::thread(std::move(task));</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">return res;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">This can be rewritten simply
- as follows if move capture can be used in a lambda expression.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;typename F&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::unique_future&lt;typename
- std::result_of&lt;F()&gt;::type&gt; spawn_task(F f){</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- std::result_of&lt;F()&gt;::type result_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::promise&lt;result_type&gt;
- promise;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::unique_future&lt;result_type&gt;
- res(promise.get_future());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::thread([&amp;&amp;promise,
- &amp;&amp;f]() {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">try</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">promise.set_value(f());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">catch(...)</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">promise.set_exception(std::current_exception());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">});</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">return res;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add move capture in a lambda
- expression.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 10</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">In the current syntax
- definition, a returned type of a function object cannot be
- obtained by using result_of from an unnamed function object
- generated by a lambda expression because it doesn&rsquo;t have
- result type.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class F&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void foo(F f)</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- std::result_of&lt;F()&gt;::type result; // error</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">foo([]{});</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">If &ldquo;Callable&rdquo; or
- &ldquo;Predicate&rdquo; concept is specified, a returned type can
- be obtained from a function object without result_type. But it is
- preferable to be able to obtain it with template.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add result_type to the syntax
- of an unnamed function object generated by a lambda expression.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 29</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The standard does not state
- whether or not direct recursion of lambdas is possible.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 30</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt">
- <FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#000000">The
- standard does not clarify the meaning of </FONT><CODE>
- <FONT FACE="Arial, sans-serif" COLOR="#000000"><FONT SIZE=2 STYLE="font-size: 9pt">this</FONT></FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#000000">
- in lambdas. Does it mean this lambda, or this class within which
- the lambda is nested?</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 31</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt">
- <FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#000000">The
- current wording does not specify how context capturing and name
- resolution </FONT><FONT SIZE=2 STYLE="font-size: 9pt">take
- place when the inner lambda refers to the outer lambda's locals
- variables and parameters.</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 45</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">para
- 2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Lambda
- is a language feature with an apparent dependency on &lt;functional&gt;.
- This increases dependency of language on library, and is
- inconsistent with the definition of freestanding in 17.6.2.4.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Change
- the text &quot;a closure object behaves as a function object&quot;
- to &quot;a closure object is a built-in object which behaves as a
- function object&quot;; and after &quot;context.&quot;, insert &quot;
- A closure object may be used without any need for &lt;functional&gt;.&quot;
- This makes clear what may already be implied, namely that lambdas
- can be used in freestanding implementations and don't increase
- dependency of language on library. (Marked as technical comment
- anyway because this clarity is technically important).</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">US 32</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The final italic &quot;this&quot;
- in the paragraph should be a teletype &quot;this&quot;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 39</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- paragraph lists all the special member functions for the class
- representing a lambda. But it omits the destructor, which is
- awkward.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- &quot;F has an implicitly-declared destructor&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 40</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">If
- one or more names in the effective capture set are preceded by &amp;,
- the effect of invoking a closure object or a copy after the
- innermost block scope of the context of the lambda expression has
- been exited is undefined. That is too restrictive. The behaviour
- should be undefined iff the lifetime of any of the variables
- referenced has ended. This should be safe and legal; currently it
- has undefined behaviour: int i; reference_closure&lt;void ()&gt;
- f; if (blah) { f = [&amp;i]() { }; } if (f) f();</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">If
- one or more names in the effective capture set are preceded by &amp;,
- the effect of invoking a closure object or a copy after the
- lifetime of any of the variables referenced has ended is
- undefined.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 41</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">For
- argument dependant lookup (3.4.2) the associated namespaces for a
- class include its bases, and associated namespaces of its bases.
- Requiring the result of a lambda expression *to dervide from*
- std::reference_closure means that ADL will look in namespace std
- when the lambda capture is entirely by reference, which might have
- surprising results. Also, relying on the idea of implicitly
- slicing objects is uncomfortable.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- inheritance with implicit conversion.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 42</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">A
- lambda with an empty capture list has identical semantics to a
- regular function type. By requiring this mapping we get an
- efficient lambda type with a known API that is also compatible
- with existing operating system and C library functions.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a new paragraph: &quot;A lambda expression with an empty capture
- set shall be convertible to pointer to function type R(P), where R
- is the return type and P is the parameter-type-list of the lambda
- expression.&quot; Additionally it might be good to (a) allow
- conversion to function reference (b) allow extern &quot;C&quot;
- function pointer types</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 43</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- note spells out the intent that objects from lambda-expressions
- with an effective capture list of references should be implemented
- as a pair of pointers. However, nothing in the rest of 5.1.1 lifts
- the requirement of to declare a reference member for each captured
- name, and a non-normative note is not enough to relax that.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">...
- provvide exceptions in the right places ...</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 44</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">There
- is a strong similarity between a [&amp;]{} lambda capturing a
- stack frame, and a [this]{} lambda binding a member function to a
- class instance. The reference_closure requirement should be
- extended to the second case, although we need some syntax to
- create such an object that is distinct from the existing
- pointer-to-member syntax. This would be a cleaner alternative to
- the new std::mem_fn library component.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Extend
- reference_closure requirement to cover [this] lambdas. Consider a
- simple syntax for creating such bound expressions.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 46</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">para
- 12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- requirement that a lambda meeting appropriate conditions be an
- object derived from reference_closure makes lambda the language
- feature dependent on &lt;functional&gt;, which increases
- dependency of the language on the library and bloats the
- definition of freestanding C++.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- text &quot;is publicly derived from&quot; with &quot;shall be
- implemented in a manner indistinguishable from&quot;. This places
- an ABI constraint on reference closures such that compiler and
- library implementer have to do compatible things. But it cuts the
- dependency of lambda syntax on &lt;functional&gt;.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-6</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1,
- 20.7.18</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-6
- Some uses of lambda expressions refer to specializations of the
- unconstrained class template <FONT FACE="Arial, sans-serif">std::reference_closure</FONT>
- (5.1.1). If the lambda expression appears in a constrained context
- and the return type or a parameter type for the lambda depend on a
- template parameter (see 14.10), such a use is ill-formed.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">In
- 20.7.18, for the class template <FONT FACE="Arial, sans-serif">std::reference_closure</FONT>,
- require <FONT FACE="Arial, sans-serif">Returnable</FONT>
- for <FONT FACE="Arial, sans-serif">R</FONT>
- and <FONT FACE="Arial, sans-serif">VariableType</FONT>
- for each of the <FONT FACE="Arial, sans-serif">ArgTypes</FONT>.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">p10</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-7
- The note at the end of paragraph 10 appears to be garbled.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- &quot;or references&quot; in the note.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-8</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">p10</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-8
- The construction of the function call operator signature is
- missing specifications for the ref-qualifier and the
- attribute-specifier.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Add
- bullets that say that the ref-qualifier and the
- attribute-specifier are absent.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 33</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">11</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">There is no
- definition of &ldquo;move constructor&rdquo; or &ldquo;move
- operation&rdquo;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Since
- this is the first place the terms are used, a definition should
- either be added here, or a cross reference to one.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-9</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">5.1.1</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-9
- There is not a single example of a lambda-expression in the
- standard. See also core issue 720 in WG21 document N2791 &quot;C++
- Standard Core Language Active Issues, Revision 59&quot;, available
- at
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2791.html
- .</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a few well-chosen examples.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 52</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- paragraph seens out of place, assignment expressions are covered
- in 5.17</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- p3 to subsection 5.17</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 53</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- definition in p1 makes no allowance for overloaded operator[] that
- treats the expression as a simple function call, and does not
- support the interchangability of arguments. Howver p2 relies on
- this definition when describing the use of brace-init-lists inside
- [].</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Insert
- a new p2 describing the changed semantics for overloaded
- operator[]. This should be a note to avoid introducing normative
- text that could potentially conflict with the later definiton of
- these semantics.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 59</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">When
- there is no parameter for a given argument, the argument is passed
- in such a way that the receiving function can obtain the value of
- the argument by invoking va_arg. That shouldn't apply to parameter
- packs. template &lt;class ... Types&gt; void f(Types ... pack);
- f(1, 2, 3);</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- that this sentence only applies where the ellipsis is used.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 60</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">In
- the remainder of 5.2.5, cq represents either const or the absence
- of const vq represents either volatile or the absence of volatile.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- &quot;and&quot; before vq</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>61</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">p1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Together
- with footnote 60 there may be confusion that the postfix
- expression is always evaluated - even when part of an unevaluated
- operand. We believe the standard does not require this, and a
- comment in the existing note would be a useful clarification.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- in footnote 60 that this will not happen if the whole expression
- is an unevaluated operand.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 62</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">In
- the final bullet, what does 'not an lvalue' mean? Does it imply
- rvalue, or are there other possible meanings? Should clauses that
- trigger on rvalues pick up on this?</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- 'not an lvalue' with 'is an rvalue'.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-10</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">5.2.5</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-10
- If E1.E2 is referring to a non-static member function, the
- potential ref-qualification on E2 should be taken into account.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Adjust
- the presentation of the types involved as appropriate.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>63</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Paragraph
- 2 is missing its number.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- one.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 64</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">A
- new name R is introduced for use in paragraphs 3 and 4. But R is
- the same as T.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- R with T and replace &quot;the required result type (which, for
- convenience, will be called R in this description)&quot; with &quot;T&quot;.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 65</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">In
- the first two bullets we have &quot;the result is a pointer (an
- lvalue referring) to&quot;. But para 2 makes clear that a
- dynamic_cast of an rvalue references produces a rvalue. (Can an
- lvalue refer to anything anyway?)</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;an lvalue referring to&quot; with &quot;reference&quot;,
- twice.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 66</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">typeid
- may return &quot;an implementation-defined class derived from std
- :: type_info&quot;. The derivation must be public.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">an
- implementation-defined class publicly derived from std ::
- type_info</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 67</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1,
- 2, 3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Paragraph
- 1 specifies when the result of static_cast is an lvalue; repeating
- it is unnecessary.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">In
- para 2, delete &quot;It is an lvalue if the type cast to is an
- lvalue reference; otherwise, it is an rvalue.&quot; and &quot;The
- result is an rvalue.&quot;. In para 3, delete &quot;The result is
- an lvalue if T is an lvalue reference type (8.3.2), and an rvalue
- otherwise.&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 54</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3,
- 6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Para
- 3: &quot;The mapping performed by reinterpret_cast is
- implementation-defined.&quot;. Para 6: &quot;... the result of
- such a pointer conversion is unspecified.&quot; Which is it?</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">In
- para 6, replace unspecified with implementation-defined.
- Alternatively, delete paragraph 3, since individual cases are
- labelled appropriately.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 55</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">dynamic_cast
- and reinterpret_cast crossreference 5.2.11 without creating an
- extra note. The second half of the note is unrelated to the
- crossrefernce, and would serve as well in normative text.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- the note about definition of casting away constness, preserve the
- cross-reference. The second sentance on reintrepret_cast to its
- own type should move out of the note into the normative text.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 56</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- notion of safely derived pointers means this conversion may not be
- as safe in the revised standard as the original. It would be good
- to call attention to the changed semantics with a note.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add:
- [Note: the result of such a conversion will not be a
- safely-derived pointer value (3.7.4.3) -- end note]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>57</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Conditionally
- supported behaviour gives a wide range or permission, so clarify
- relationship between safely-derived object pointers and function
- pointers in a note.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add:
- [Note: In such cases, the implementation shall also define whether
- a safely-derived object pointer cast to a function pointer can be
- safely cast back -- end note]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 58</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.2.11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Casting
- from an lvalue of type T1 to an lvalue of type T2 using a
- reference cast casts away constness if a cast from an rvalue of
- type &ldquo;pointer to T1&rdquo; to the type &ldquo;pointer to T2&rdquo;
- casts away constness. That doesn't cover rvalue references.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- lvalue with &quot;lvalue or rvalue&quot; twice.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">US 34</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">5.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- list of unary operator should be in teletype font.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 68</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.3.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2-9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">All
- the unary operands other than * return rvalues - but this is not
- stated.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a paragraph 1a &quot;The following unary operators all produce
- results that are rvalues.&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 69</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.3.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">If
- we cannot bind references/take address of functions in
- concept_maps, does that mean we cannot use generic bind in
- constrained templates? Launch threads with expressions found via
- concept map lookup? Hit problems creating std::function objects?
- Does the problem only occur if we use qualified lookup to
- explicitly name a concept map? Does it only kick in if we rely on
- the implicit function implementation provided by a concept_map, so
- some types will work and others won't for the same algorithm?!</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">...
- unknown ...</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 70</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.3.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- sizeof operator shall not be applied to ... an enumeration type
- before all its enumerators have been declared We should allow enum
- E : int; sizeof(E).</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &quot;an enumeration type&quot; to &quot;an enumeration type whose
- underlying type is not fixed&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 71</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.3.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- type of an allocated object wih the type specifier auto is
- determined by the rules of copy initialization, but the
- initialization applied will be direct initialization. This would
- affect classes which declare their copy constructor explicit, for
- instance. For consistency, use the same form of initiailization
- for the deduction as the new expression.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- T x = e; with T x(e);</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 72</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.3.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- library headers have been carefully structured to limit the
- dependencies between core language and specific headers. The
- exception thrown should be catchable by a handler for a type lised
- in &lt;exception&gt; header in cluase 18. This might be
- accomplished by moving length_error into the &lt;exception&gt;
- header, but its dependency on logic_error with its std::string
- constructors suggest this is not a good idea. Prefer to pick an
- existing exception instead.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Throw
- std::bad_alloc instead of std::length_error.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 73</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.3.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">A
- class type with conversion operator can only be used if the
- conversion type is constexpr and the class is a literal type.
- Adding the single word 'literal' before class type will clarify
- this.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- 'literal' before 'class type'</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 74</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.3.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">operators,
- like constructors and destructors, do not have names. However, in
- certain circumstances they can be treated as if they had a name,
- but usually the stanadard is very clear not to actually describe
- their name as a distinct property.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &quot;the allocation function&rsquo;s name is operator new&quot;
- to &quot;the allocation function is named operator new&quot; and
- similarly for operator delete.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 35</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.3.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Missing
- period in middle of paragraph between &quot;in the scope of T&quot;
- and &quot;If this lookup fails&quot;</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a period between &quot;in the scope of T&quot; and &quot;If this
- lookup fails&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 75</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.3.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">A
- paragraph strarting with [Note... is easily skipped when reading,
- missing the normative text at the end.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Swap
- order of the note and normative text.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 21</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">5.3.6
- [Alignof</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Should
- not the type of alignof-expression be of type std::max_align_t?</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 35</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">5.8</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">2
- and 3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There is curious spacing in
- the expressions &quot;E1 &lt;&lt;E2&quot; and &quot;E1 &gt;&gt;E2&quot;.
- This is a formatting change since previous versions of the
- Standard.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 47</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.14
- / 5.15</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Why
- are the descriptions of order of evaluation of expressions and
- side effects different between &amp;&amp; and || operators. The
- interaction with the memory model should be identical, so
- identical words should be used to avoid accidential
- inconsistencies in interpretation.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Pick
- one form of wording as 'the best' and apply it in both places.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 48</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.18</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- defining feature of the comma operator is the guaranteed
- sequencing of two expressions. This guarantee is lost when
- presented with an overloaded operator, and this change is subtle
- enough to call attention to it.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add:
- [Note: There are no guarantees on the order of value computation
- for an overloaded comma operator -- end note]</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 49</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.19</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Is
- an implementation permitted to reject this? constexpr int f() {
- return f(); } int a[f()]; AFAICT it is well-formed; f() seems to
- satisfy all the rules to make it a constant expression. I would
- hate compilation to become a potentially non-terminating
- experience.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- an escape clause to allow the implementation to reject excessively
- deep nesting of constexpr function evaluations. (This can possibly
- be a note, since it is arguable that this point is handled by the
- general rule on resource limits in 1.4/2. A sufficiently smart
- compiler could use tail recursion above, meaning that it would
- never run out of memory given this program though.)</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>50</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.19</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- following should be valid: enum E { foo = 4}; const E c = foo; int
- a[c]; But currently it is not - c is not an lvalue of effective
- integral type (4th bullet). (See also 7.1.6.1/2)</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &quot;effective integral type&quot; to &quot;effective integral or
- enumeration type&quot; in the 4th bullet, 1st sub-bullet.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 51</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5.19</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">typeid
- expressions can never be constant, whether or not the operand is a
- polymorphic class type. The result of the expression is a
- reference, and the typeinfo class that the reference refers to is
- polymorphic, with a virtual destructor - it can never be a literal
- type.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- the words &quot;whose operand is of a polymorphic class type&quot;
- on the bullet for typeid expressions.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 76</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Do
- we really need two different terms that say the same thing?</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Pick
- either 'block' or 'compound statement' as the preferred term and
- use it consistently throughout the standard.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 22</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">6.4.2
- [The switch statement]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- constant-expression in</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">case
- constant-expression</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">should
- be allowed to be of any constant expression of literal type for
- which a constexpr comparison operator (operator&lt; and
- operator==) is in scope. Now that constant expressions of other
- integral types are evaluated at compile time, the restriction for
- case-labels is at best artificial.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 77</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- terms i/o operation, synchronize operation and atomic operation
- have very specific meanings within the standard. The paragraph
- would be much easier to understand with the terms crossreferenced.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Profide
- a cross-reference for the terms: i/o operation, synchronize
- operation and atomic operation </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 11</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">6.5.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 5</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">There
- is no _RangeT type in the equivalent code to &ldquo;range-base
- for&rdquo; statement. It existed in N2049.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add a typedef for _RangeT in
- the example as follows:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- decltype( expression ) _RangeT;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">auto &amp;&amp;
- __range = ( expression );</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">for ( auto
- __begin = std::Range&lt;_RangeT&gt;:: begin(__range),</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
- <FONT SIZE=2 STYLE="font-size: 9pt">__end = std::Range&lt;_RangeT&gt;::
- end(__range);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">__begin
- != __end;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">++__begin
- )</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">for-range-declaration
- = *__begin;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">statement</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 78</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6.5.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Including
- the header &lt;iterator_concepts&gt; is far too unwieldy to enable
- an important and (expected to be) frequently used syntax.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Merge
- &lt;iterator_concepts&gt; into &lt;concepts&gt; and change 6.5.4p2
- to refer to &lt;concepts&gt;, or make the Range concept
- fundamental along with the other support concepts in 14.9.4 and
- strike any reference to including a header.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 79</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6.5.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- definition of for (for-range-declaration : expression) statement
- is expanded in terms which require a Range concept, and the
- program is ill-formed if &lt;iterator_concepts&gt; isn't included.
- For users, iterating through old-fashioned arrays, this is a
- sledge-hammer to crack a nut and compares poorly with other
- languages. It's also not possible to implement this without
- adversely impacting the freestanding definition in 17.6.2.4.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">When
- expression is an array a of length N whose length is known at
- compile time, expand range-for as 'for (... p=a, p!=a+N, p++) ...'
- without requiring the Range concept or &lt;iterator_concepts&gt;.
- Also, when expression is an initializer_list, expand range-for
- similarly without requiring &lt;iterator_concepts&gt;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-11</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">6.9</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">p1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">DE-11
- A sentence in paragraph 1 reads: &quot;Outside of a constrained
- context, the late-checked block has no effect.&quot; This, at face
- value, specifies that the <EM>compound-statement</EM> of such a
- late-checked block is never executed, which appears to be
- unintended.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">State
- that such a late-checked block has the same meaning as if the <FONT FACE="Arial, sans-serif">late_check</FONT>
- keyword were absent.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 80</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Many
- of the sections and major subsections open with a sentence
- summarising the content. I'm not sure this is necessary; this
- isn't a tutorial. The problem with these summaries is that because
- they omit much of the detail, they tend to be inaccurate. This may
- not matter, but I feel the document would be improved by omitting
- them. There's a prime example here: &quot;Declarations specify how
- names are to be interpreted.&quot; Not true for static_assert, an
- asm declaration nor an anonymous bit field.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- the first sentence.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 81</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">String
- literal concatenation happens in phase 6, before parsing, so it is
- legal and useful to use it for the string literal in a
- static_assert. It would be useful to add a note mentioning this.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a note: Multiple adjacent string literals may be used instead of a
- single /string-literal/; see [lex.phases].</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 82</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Paragraph
- 2 talks about declarations that can have nested declarations
- within them. It doesn't mention scoped enumerations - but
- according to 7.2/11, &quot;Each scoped enumerator is declared in
- the scope of the enumeration.&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- &quot;scoped enumeration&quot; to the list in the second sentence.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 83</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- longest sequence of decl-specifiers that could possibly be a type
- name is taken as the decl-specifier-seq of a declaration. But many
- sequences of decl-specifiers cannot possibly be a type name - eg
- the sequence &quot;friend int&quot;, or &quot;typedef int&quot;.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Not
- sure. I understand the rule, just not how to say it.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 84</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- grammar includes alignment-specifier as a production for
- decl-specifier, but there is no production for
- alignment-specifier. I suspect this is a holdover from before
- alignment was handled as an attribute.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Delete
- the production (including the duplicate in A6)</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FI
- 3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">7.1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">[dcl.spec.auto]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">While
- it&rsquo;s considered too late for this standard revision,
- consider loosening the restrictions for auto specifier and making
- it more a mirror of a deduced template function parameter.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">See
- restricted-auto.ppt</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 85</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">...
- the init-declarator-list of the declaration shall not be empty
- (except for global anonymous unions, which shall be declared
- static). Global here means &quot;declared at namespace scope&quot;.
- (cf 9.5/3 &quot;Anonymous unions declared in a named namespace or
- in the global namespace shall be declared static.&quot;).</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;global&quot; with &quot;namespace scope&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 86</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2,3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- register keyword serves very little function, offering no more
- than a hint that a note says is typically ignored. It should be
- deprecated in this version of the standard, freeing the reserved
- name up for use in a future standard, much like auto has been
- re-used this time around for being similarly useless.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Deprecate
- current usage of the register keyword.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 87</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1,
- 4, 5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Why
- require two keywords, where one on its own becomes ill-formed?
- thread_local should imply 'static' in this case, and the
- combination of keywords should be banned rather than required.
- This would also eliminate the one of two exceptions documented in
- 7.1.1p1.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Drop
- requirement to combine static keyword with thread_local at
- block-scope inside a function definition.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 36</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The permission to use
- thread_local static data members is missing.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the static members as a permitted use.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 23</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">7.1.5
- [constexpr]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">'constexpr'
- functions should be allowed to take const reference parameters, as
- long as their uses are in a context where a constant expression
- may be required. For example, the following should be allowed</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template&lt;typename
- T, int N&gt;</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">int
- size(const T(&amp;)[N]) { return N; }</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">int
- a[] = { 41,42,43,44 };</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">enum
- { v = size(a) };</FONT></P>
- <P STYLE="margin-top: 0.04in"><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 12</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.1.5</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- should be allowed to define constexpr recursively.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There is an explanation in
- N2235, Generalized Constant Expressions&mdash;Revision 5, as
- follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.39in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">We (still) prohibit recursion
- in all its form in constant expressions. That is not strictly
- necessary because an implementation limit on recursion depth in
- constant expression evaluation would save us from the possibility
- of the compiler recursing forever. However, until we see a
- convincing use case for recursion, we don&rsquo;t propose to allow
- it.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Then, here are the use cases
- where allowing recursion for constexpr is very useful.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Range of problem to be handled
- with constexpr would become extended. For example, user defined
- type (e.g. Complex type) could be placed in ROM area. But with
- current specification, a function defined with constexpr cannot be
- called recursively. As a side effect is not allowed in
- compile-time, it cannot be implemented to repeat anything without
- recursion. Although it could be implemented without recursion like
- func0, func1, func2 in an example below, it is not elegant
- solution.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">constexpr double func0(double
- x) { /* ... */}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">constexpr double func1(double
- x) { /* call for func0 */ }</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">constexpr double func2(double
- x) { /* call for func1 */ }</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">/* ... */</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">- Compile-time and runtime</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">As constexpr can be also
- evaluated both in compile-time and runtime, we need to discuss
- about both cases.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Runtime evaluation is just to
- execute it. If you eliminate constexpr keyword, it is executable
- as of now. Any modern compiler may optimize tail recursion easily.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Compile-time evaluation is the
- same thing as template recursion. It is necessary to support
- floating point operation, but it is already possible to calculate
- it in compile-time, so it&rsquo;s ok.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">- Sample</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Here is an example to
- calculate a square root using constexpr recursively.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">/*constexpr*/ double
- SqrtHelper(double x, double a, int n)</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">return n == 0 ? a :
- SqrtHelper(x, (x / a + a) / 2.0, n - 1);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">/*constexpr*/ double
- Sqrt(double x)</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">return SqrtHelper(x, x, 20);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">/*constexpr*/ double root2 =
- Sqrt(2.0); // 1.41421...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Allow constexpr recursion.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 37</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.1.6.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There is a &quot;Note: 3.9.3
- describes how cv-qualifiers affect object and function types.&quot;
- So far as I can see, 3.9.3 CV-qualifiers only describes
- cv-qualifiers for objects, cv-qualifiers for (member) functions
- being described in 8.3.5 Functions.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 89</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1.6.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- two normative sentences in this paragraph appear to duplicate text
- elsewhere - but they aren't exact duplicates, which introduces
- uncertainty. 1. &quot;An object declared in namespace scope with a
- const-qualified type has internal linkage unless it is explicitly
- declared extern or unless it was previously declared to have
- external linkage.&quot;. This nearly repeats 7.1.1/7: &quot;Objects
- declared const and not explicitly declared extern have internal
- linkage.&quot; The former seems to allow more wiggle room - can an
- object be &quot;previously declared to have external linkage&quot;
- without having been &quot;explicitly declared extern&quot;? 2. &quot;A
- variable of non-volatile const-qualified integral or enumeration
- type initialized by an integral constant expression can be used in
- integral constant expressions (5.19).&quot; This nearly duplicates
- 5.19/2, bullet 4, 1st sub-bullet - &quot;[... an integaral
- constant expression can use] an lvalue of effective integral type
- that refers to a non-volatile const variable or static data member
- initialized with constant expressions&quot;. The latter does not
- allow for lvalues of enumeration type (neither scoped not unscoped
- enumerations are integral types - 3.9.1/7, and note 44). This
- seems to be a flaw in 5.19/2.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Make
- the normative text in this section into one or more notes, with
- cross references, and correct the referenced text if necessary.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 90</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1.6.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">para
- 1 and table 9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- grammar in paragraph one makes &quot;nested-name-specifier
- template simple-template-id&quot; a simple-type-specifier, but
- unlike all the others it is omitted from table 9.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a row to table 9 mentioning simple-template-id and punting to
- clause 14 (cf decltype(expression)).</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 91</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1.6.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">5.1/5
- says &quot;[A] parenthesized expression can be used in exactly the
- same contexts as those where the enclosed expression can be used,
- and with the same meaning, except as otherwise indicated.&quot;
- When the first bullet point of this paragraph, describing the type
- denoted by decltype(e), says &quot;if e is an id-expression ...
- decltype(e) is the type of the entity named by e&quot;, 5.1/5 is
- not excluded, which would imply that decltype((e)) was also the
- type of e. But the intention appears that it should be caught by
- the third bullet and treated as an lvalue expression, so
- decltype((e)) should be a reference to the type of e. Conversely,
- the second bullet point says &quot;(parentheses around e are
- ignored)&quot;, which is redundant because of 5.1/5.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Insert
- &quot;unparenthised&quot; in the first bullet point - &quot;if e
- is an *unparenthised* id-expression ...&quot;. In the second
- bullet point, move &quot;(parentheses around e are ignored)&quot;
- into a note.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 92</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1.6.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- note correctly indicates that, if T is a template type parameter,
- then &quot;friend class T;&quot; is ill-formed. It might be worth
- pointing out at the same time that the alternative &quot;friend
- T;&quot; is now allowed - see 11.4/3.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Either
- strike the note or add reference to 11.4/3 and/or mention of
- &quot;friend T;&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 93 </FONT>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1.6.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Grammar
- before para 1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">In
- the third production, &quot;enum ::opt nested-name-specifieropt
- identifier&quot;, enum should not be in italics; its referring to
- the enum keyword.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- to keyword font</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 94</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1.6.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- auto type-specifier signifies that the type of an object being
- declared shall be deduced from its initializer or specified
- explicitly at the end of a function declarator. A function
- declarator does not declare an object.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- auto type-specifier signifies that the type of an object being
- declared shall be deduced from its initializer or that the return
- type of a function is specified explicitly at the end of a
- function declarator. </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 95</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.1.6.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">(See
- also c++std-core-13583) This paragraph allows auto &quot;in the
- type-specifier-seq in a new-type-id (5.3.4)&quot; (and nowhere
- else not listed). Specifically, it isn't allowed in a type-id in a
- new-expression. That allows &quot;new auto (42)&quot;, but not
- &quot;new (auto)(42)&quot;. However, 5.3.4/2 suggests the latter
- should be allowed &quot;If the auto type-specifier appears in the
- type-specifier-seq of a new-type-id or type-id of a new-expression
- ...&quot;. The inconsistency should be resolved, ideally in favour
- of allowing both forms.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &quot;in a new-type-id&quot; to &quot;in a new-type-id or type-id
- in a new-expression&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 24</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">7.1.6.4
- [auto specifier]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Now
- that 'auto' is finally used in its most obvious sense to state
- `deduce the type of this variable from initializer', it should
- also be allowed in template parameter declarations, as in</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template&lt;auto
- n&gt; struct X { /* &hellip; */ };</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">X&lt;903&gt;
- x;</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">X&lt;&amp;Widget::callback&gt;
- y;</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">instead
- of the current, often verbose and cumbersome</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 10pt" FACE="Consolas, monospace">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="fr-FR">template&lt;typename
- T, T n&gt; struct X { /* &hellip; </SPAN></FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">*/
- };</FONT></FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">X&lt;int,903&gt;
- x;</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">X&lt;void
- (Widget::*)(),&amp;Widget::callback&gt; y;</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">We
- understand that 'auto' is used in 14.1/18 in a different way (for
- constrained template), but that usable appears very strange
- syntax, unnatural and does not fit well with the usage in this
- section.</FONT></P>
- <P STYLE="margin-top: 0.04in"><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 38</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The discussion of attribute
- specifiers should be a separate paragraph.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 39</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The paragraph says in part &quot;An
- opaque-enum-declaration declaring an unscoped enumeration shall
- not omit the enum-base.&quot; This statement implies that the base
- may be omitted for scoped enumerations, which is somewhat
- inconsistent with paragraph 3 and somewhat consistent with
- paragraph 5.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">As
- this implication leaves no representation, it should be either
- affirmed here or the statement should be expanded. Perhaps a note
- is warranted.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 13</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">paragraph
- 3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">In the description for an
- unscoped enumeration, enum-base in redeclaration must be the same
- underlying type as in the 1st declaration, but it is not described
- explicitly, while it is referred that all enum-bases in
- redeclarations must specify the same underlying type.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- the description, &quot;same underlying type&quot;, with &quot;same
- as underlying type of (previous) declaration.&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 96</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">enum
- E { }; What are the values of E? It has neither a smallest nor
- largest enumerator, so paragraph 7 doesn't help. (Paragraph 6
- indicates that the underlying type is as if E had a single
- enumerator with value 0, but that does not define the values of
- E.)</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a second sentence to paragraph 7 (before &quot;Otherwise&quot;):
- &quot;If the enumerator-list is empty, 0 is the only value of the
- enumeration.&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 97</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Missing
- punctuation after &quot;blue&quot; in: &quot;The possible values
- of an object of type color are red, yellow, green, blue these
- values can be converted ...&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a semicolon: &quot;The possible values of an object of type color
- are red, yellow, green, blue; these values can be converted ...&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 98</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- would be useful to be able to determine the underlying type of an
- arbitrary enumeration type. This would allow safe casting to an
- integral type (especially needed for scoped enums, which do not
- promote), and would allow use of numeric_limits. In general it
- makes generic programming with enumerations easier.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a TransformationTrait to 20.5.6 that returns the underlying type
- of an enumeration type.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 99</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is unclear whether an enumeration type is complete after an
- opaque-enum-declaration. This paragraph only says so in a note,
- and the general rule in 3.9/5 (&quot;Incompletely-defined object
- types ... are incomplete types&quot;) is unclear in this
- situation.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- &quot;an enumeration declared by an opaque-enum-declaration ... is
- a complete type&quot; from the note to normative text.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 14</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.3.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.2in; text-indent: -0.2in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The description of the
- behavior when a member that was defined with same name in other
- namespace was referred.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.45in; text-indent: -0.25in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">- It seems that the behavior
- of the following case is not defined. So we think that it is
- necessary to define that.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace Q {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">inline namespace V {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">int g;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">int g;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.67in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Q::g =1;// ill-fromed, Q::V::g
- =1;, or Q::g = 1;?</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.45in; text-indent: -0.25in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">- Add that the following case
- is ill-formed to more easily to understand.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.5in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace Q {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.5in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">inline namespace V1{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.5in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">int g;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.5in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.5in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">inline namespace V2{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.5in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">int g;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.5in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.5in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.44in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Q::g =1;//ill-formed</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.44in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.2in; text-indent: -0.2in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add the description of the
- behavior when a member that was defined with same name in other
- namespace was referred.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 100</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.3.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">10
- and 13</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Para
- 10 says &quot;A using-declaration is a declaration and can
- therefore be used repeatedly where (and only where) multiple
- declarations are allowed.&quot; Para 13 says &quot;Since a
- using-declaration is a declaration, the restrictions on
- declarations of the same name in the same declarative region (3.3)
- also apply to using-declarations.&quot; These appear to be saying
- exactly the same thing.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Delete
- para 10, moving its example into para 13.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 101</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.3.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">If
- a using-declaration uses the keyword typename and specifies a
- dependent name (14.6.2), the name introduced by the
- using-declaration is treated as a typedef-name (7.1.3). That
- doesn't specify at all what the effect of using typename with a
- non-dependent name is. Is it allowed? What about outside any
- template? What if the name isn't a type? (14.6/4 doesn't cover
- this, I think.)</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Allow
- typename for non-dependent names iff they refer to a type.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-12</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">7.3.3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">p15</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">DE-12
- Overriding and hiding of member functions named in
- using-declarations should consider ref-qualifiers, because they
- are part of the function type.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 25</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">7.3.3
- [The using declaration]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Paragraph
- 21</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- syntax for concept map alias is unnecessarily both confused and
- verbose.</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">We
- strongly suggest simplifications, e.g.</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">using
- N1::C&lt;int&gt;;</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">that
- fits well with existing constructs. The syntactic complexity is
- too high for a new feature presumably designed to support sound
- programming.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 102</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.3.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- paragraph says &quot;If name lookup finds a declaration for a name
- in two different namespaces, and the declarations do not declare
- the same entity and do not declare functions, the use of the name
- is ill-formed.&quot; But the example uses declaration of
- functions, so is not covered by this paragraph.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the example to paragraph 7, and/or replace it with an appropriate
- example.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 40</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">The
- list of attributes is missing an attribute to indicate that a
- function with a </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">throw()</FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt">
- (throws nothing) clause need not have the </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">unexpected()</FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt">
- catch clause generated. This attribute was a motivating example
- for the attribute syntax, and its omission is surprising.</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the attribute.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 41</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">A common problem is
- unintentionally declaring a new virtual member function instead of
- overriding a base virtual member function.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">An
- attribute stating intent to override would enable better
- diagnostics.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 26</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">7.6
- [Attributes]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Are
- they part of object types or not? The section does not appear to
- indicate that clearly.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FI
- 1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">7.6</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Add
- override-attribute for functions in order to avoid mistakes when
- overriding functions.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">See
- override&shy;-attribute.doc, override-attribute.ppt</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 27</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">7.6.1</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">This
- section specifies that no name lookup is performed on any
- identifier contained in an attribute-token. This in particular
- implies that, for example, it is impossible to define a template
- class parameterized by its alignment. That restriction is
- unacceptable.</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- original alignment proposal made that useful construct possible.</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Furthermore
- paragraph 7.6.1/2 appears contradictory with the rest of that
- section -- since no name lookup is performed, how a 'type-id'is
- determined?</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 103</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.6.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Attributes
- should support pack expansion. For example, this would be
- extremely useful with the align attribute, directly supporting the
- (removed) functionality of aligned_union. NOte that aligned_union
- was removed as varaiant-unions were considered a complete
- replacement - however this is not true for variadic templates.
- Adding this support to attributes would remove the remaining need,
- and support similar attributes in the future.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add:
- attribute... to the grammar for attribute-list Add to list in
- 14.5.3p4: &quot;In an attribute-list(7.6.1); the pattern is an
- attribute.&quot; </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 104</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.6.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is helpful for each subclause to contain a short paragraph
- introducing its intent an purpose. 7.6 has such a paragraph, but
- it is nested under a more specific subsection.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.6.1p1
- should move up one level to become 7.6p1. There grammar should
- remain under 7.6.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 105</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.6.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Allowing
- only one level of namespaces in attributes seems unnecessarily
- limiting.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">To:
- attribute-scoped-token: attribute-namespace :: identifier add
- attribute-namespace :: attribute-scoped-token </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 106</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.6.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Extensive
- use of alignment and related terms without cross reference.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- cross-reference to 3.11.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 15</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.6.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">An
- abbreviation of 7.6.2 should be &ldquo;[decl.attr.align]&rdquo;
- instead of &ldquo;[dcl.align]&rdquo;.<BR>Section name
- &ldquo;[dcl.align]&rdquo; is not consistent with others, because
- others in 7.6 are the form of &ldquo;dcl.attr.*&rdquo;. In N2761,
- the section name of 7.1.7 had been changed from &ldquo;[dcl.align]&rdquo;
- to &ldquo;[dcl.attr.align]&rdquo;, but in N2800 it was reverted to
- &ldquo;[dcl.align]&rdquo; along with a change of section number,
- 7.1.7 to 7.6.2.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &quot;[dcl.align]&quot; of 7.6.2 to &quot;[decl.attr.align]&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 107</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.6.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">While
- undefined behaviour might be the best we can guarantee, it would
- be helpful to encourage implementations to diagnose function
- definitions that might execute a return.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Adda
- a [Note : implementations are encouraged to issue a diagnostic
- where the definition of a function marked [[noreturn]] might
- execute a return statement -- end note]</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 108</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.6.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is unclear why no diagnostic is required for an easily detectable
- violation. It is even more surprising that the associated footnote
- mandates behaviour for an ill-formed program.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- &quot;no diagnostic required&quot; and the associated footnote.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 42</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">7.6.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">The
- meaning of the </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">[[final]]</FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt">
- attribute applied to classes is inconsistent with other languages
- and not desirable in its own right.</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">Modify
- the semantics of </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">[[final]]</FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt">
- applied to classes. See the attached paper &quot;Issues with the
- C++ Standard&quot; under Chapter 7 &quot;Meaning of </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">[[final]]</FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt">
- attribute applied to classes&quot;.</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 109</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.6.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- example code refers in comments to &quot;Compilation unit&quot; A
- and B. The term should be &quot;Translation unit&quot; (2/1)</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;Compilation&quot; with &quot;Translation&quot; in two places</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 110</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7.6.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- code in the example (compilation unit A) has:
- &quot;foo_head[i].load(memory_order_consume)&quot;. foo_head[i] is
- of type foo *, so it does not have a load member.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- the type of foo_head to atomic&lt;foo *&gt;[].</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 43</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">8</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">With
- the introduction of late-specified return types for functions and
- lambda expressions, we now have three different syntaxes for
- declaring functions. The </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">-&gt;</FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt">
- late declaration is used in two. The </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">auto</FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt">
- keyword is used in one, but also used differently in variable
- definitions.</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Some
- simplification is needed.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 111</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">8.3.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">13</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Example
- missing closing bracket in template&lt;typename... T&gt; void f(T
- (* ...t)(int, int);</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- closing bracket like this: template&lt;typename... T&gt; void f(T
- (* ...t)(int, int));</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 44</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">8.3.5</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT> <FONT SIZE=2 STYLE="font-size: 9pt">13</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">In the Example, &quot;template
- void f(T (* ...t)(int, int);&quot; is missing a close parenthesis.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">It
- presumably should read: &quot;template void f(T (* ...t))(int,
- int);&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 45</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">8.3.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">13</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">At
- present, function parameter packs can only occur at the end of a
- parameter-declaration-list. This restriction unnecessarily
- prohibits uses of function parameter packs in cases where template
- argument deduction isn&rsquo;t needed, e.g.,</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template&lt;class...
- T&gt; struct X { };</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template&lt;class...
- T1, class... T2&gt;</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">struct
- X&lt;pair&lt;T1, T2&gt;...&gt; {</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">void
- f(T1..., T2...);</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">};</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">More
- importantly, this restriction is inconsistent with the way pack
- expansions are handled. For example, this template is well-formed
- (but X&lt;T..., int&gt; is a non-deduced context):</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template&lt;class...
- T&gt; void f(X&lt;T..., int&gt;);</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Therefore,
- the restriction that limits function parameter packs to the end of
- the parameter-declaration-list should be removed. Instead,
- function parameter packs not at the end of the
- parameter-declaration-list should be considered non-deduced
- contexts.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 8.3.5p13, remove the sentence &ldquo;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">A
- function parameter pack, if present, shall occur at the end of the
- parameter-declaration-list.&rdquo;</SPAN></FONT></FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">In
- 14.8.2.1p1, replace the phrase &ldquo;For a function parameter
- pack&rdquo; with &ldquo;For a function parameter pack that occurs
- at the end of a </SPAN></FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG=""><I>parameter-declaration-list</I></SPAN></FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">&rdquo;.</SPAN></FONT></FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">Replace
- the note text &ldquo;A function parameter pack can only occur at
- the end of a parameter-declaration-</SPAN></FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">list
- (8.3.5).&rdquo; with &ldquo;A function parameter pack that does
- not occur at the end of a parameter-declaration-list is a
- non-deduced context.&rdquo;</FONT></FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 14.8.2.5p5, add a new bullet: &ldquo;A function parameter pack
- that does not occur at the end of its parameter-declaration-list.&rdquo;</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 14.8.2.5p10, replace &ldquo;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">If
- </SPAN></FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">the
- parameter-declaration corresponding to Pi is a function parameter
- pack&rdquo; with &ldquo;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">If
- </SPAN></FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">the
- parameter-declaration corresponding to Pi is a function parameter
- pack and Pi occurs at the end of the parameter-declaration-list&rdquo;.
- </FONT></FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Replace
- </FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">the
- note text &ldquo;A function parameter pack can only occur at the
- end of a parameter-declaration-</SPAN></FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">list
- (8.3.5).&rdquo; with &ldquo;A function parameter pack that does
- not occur at the end of a parameter-declaration-list is a
- non-deduced context.&rdquo;</FONT></FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-13</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">8.4
- </FONT>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">p2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-13
- The second paragraph, quoting the grammar for the declarator of a
- function declaration, is not considering late-specified return
- types and attributes.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Properly
- quote the grammar from 8.3.5.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 16</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">8.5</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">15</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo, duplicated &quot;in&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">&quot;The
- initialization that occurs in in the forms&quot;</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- one.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 46</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">8.5.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- ability for an rvalue reference to bind to an lvalue opens a
- type-safety hole that becomes very dangerous with concepts. For
- example, consider vector&rsquo;s push_back operation:</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">requires
- MoveConstructible&lt;T&gt; void push_back(T&amp;&amp;);</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">requires
- CopyConstructible&lt;T&gt; void push_back(const T&amp;);</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">For
- a copy-constructible T (which is also move-constructible),
- push_back does the right thing. However, if T is something that is
- move-constructible (e.g., unique_ptr&lt;int&gt;), the second
- overload is removed from considered (it is effectively SFINAE&rsquo;d
- away), so only the first overload remains. Therefore, one could
- accidentally call push_back with an lvalue of type T, and
- push_back would silently move from the lvalue. The same problem
- occurs without concepts (albeit less frequently).</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Prohibit
- rvalue references from binding to lvalues.</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Unfortunately
- this change will break some current use cases of rvalue reference
- including the use of rvalue streams, and of the forward function
- itself. To resolve this we may want to consider three types of
- references:</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <OL>
- <LI><P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- current reference.</FONT></P>
- <LI><P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">A
- non-const reference that only binds to rvalues.</FONT></P>
- <LI><P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">A
- non-const reference that will bind to both lvalues and rvalues.</FONT></P>
- </OL>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Still
- another solution would be to adopt the &ldquo;deleted function&rdquo;
- solution for all functions. This solution is described in comment
- for 12.1, 12.4, 12.8, but restricted to special functions in that
- comment. (See US NN).</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 49</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">8.5.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT> <FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">In
- the Example, the comments could be improved.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">See the attached paper &quot;Issues
- with the C++ Standard&quot; under &quot;Editorial Issues&quot; and
- &quot;8.5.4/6&quot;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 112</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4-9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">We
- now have concepts that should (or should not?) map to the terms
- described in Clause 9 - these should be at least referenced.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- appropriate forward references to 14.9.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 113</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">9.4.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Mis-applied
- edit from the paper n2756</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- term 'constant-initializer' should have been struck out when
- replaced by brace-or-equal-initializer. There are two occurrences
- in this paragraph</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 50</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">12.1,
- 12.4, 12.8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Implicitly-declared
- default constructors, destructors, copy constructors, and copy
- assignment operators are deleted when their definitions would be
- ill-formed. However, unlike with overloading and template argument
- deduction, access control is performed as part of the check for
- making one of these special function deleted. This inconsistency
- should be removed.</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">This
- change would sacrifice some backward compatibility in favor of
- consistency. With the current wording, checking that the following
- class &lsquo;A&rsquo; is CopyConstructible would proceed without
- error (it is not CopyConstructible):</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">class
- A { A(const A&amp;); };</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">With
- the proposed change, testing whether A is CopyConstructible would
- produce a diagnostic. To fix the problem, the user would have to
- use a deleted function:</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">class
- A { A(const A&amp;) = delete; };</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 12.1p5, remove the phrase &ldquo;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">
- or inaccessible from the implicitly-declared default </SPAN></FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">constructor&rdquo;.</FONT></FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 12.4p3, remove the phrase &ldquo;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">or
- a destructor that is inaccessible from the implicitly-declared
- destructor,&rdquo; and the phrase &ldquo;or a destructor that is
- inaccessible from the </SPAN></FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">implicitly-declared
- destructor</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">&rdquo;.</SPAN></FONT></FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 12.8p5, remove the phrase &ldquo;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">
- or inaccessible from the implicitly-declared copy constructor&rdquo;
- from the two places it occurs.</SPAN></FONT></FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 12.8p10, remove the phrase &ldquo;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="">or
- inaccessible from the implicitly-declared copy assignment
- operator&rdquo; from the two places it occurs.</SPAN></FONT></FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 28</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">12.6.1
- [Explicit initialization]</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">This
- section, in particular the example with `g' appears contradictory
- with the syntax for uniform initialization.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 51</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">12.6.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT> <FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The discussion of delegating
- constructors should be in its own paragraph.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 114</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">12.6.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Despite
- all the attempts to unify initialization syntax, it is still not
- possible to copy-initialize base classes or non-static data
- members, which means the explicit keyword cannot have a bearing
- during evaluation of a constructor. A minimal addition to the
- grammar, allowing an optional = between the mem-initializer-id and
- braced-init-list would allow the user to choose between copy and
- direct initialization</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Ammend
- the grammar for mem-initializer: mem-initializer-id =OPT
- braced-init-list Extend p3 to allow for Copy Initialization if the
- optional = is present: 3 The expression-list or braced-init-list
- in a mem-initializer is used to initialize the base class or
- non-static data member subobject denoted by the mem-initializer-id
- according to the initialization rules of 8.5 for
- direct-initialization, OR COPY-INITIALIZATION IF THE OPTIONAL = IS
- PRESENT BETWEEN THE MEM-INITIALIZER-ID and the BRACED-INIT-LIST.
- [Example:...</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 52</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">13.5.8</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 5</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">A
- word is misspelled.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &ldquo;shal&rdquo; to &ldquo;shall&rdquo;.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 115</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6-11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Exported
- templates were a great idea that is generally understood to have
- failed. In the decade since the standard was adopted, only one
- implementation has appeared. No current vendors appear interested
- in creating another. We tentatively suggest this makes the feature
- ripe for deprecation. Our main concern with deprecation is that it
- might turn out that exported constrained templates become an
- important compile-time optimization, as the constraints would be
- checked once in the exported definition and not in each
- translation unit consuming the exported declarations.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Consider
- deprecating exported templates, but no action yet. Examine
- interaction with constrained templates, and see if other more
- appropriate mechanism will support compile-time optimization.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 116</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6-11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Is
- it possible to export a concept map template? The current wording
- suggests it is possible, but it is not entirely clear what it
- would mean.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Either
- prohibit exporting concept map templates, or more directly address
- what it means to export a concept map.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 117</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- would be nice to allow template alias within a function scope, and
- possibly a scoped concept map. As these affect name lookup and
- resolution, rather than defining new callable code, they are not
- seen to present the same problems that prevented class and
- function templates in the past.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Allow
- template aliases to be declared inside a function scope, and
- consider scoped concept maps.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 118</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6-11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Exported
- templates are a complicated feature with surprisingly little text.
- To make this important text more visible, split it off into its
- own subclause [temp.export]</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Create
- a new subclause [temp.export] containing 14p6-11. Move 14p12 ahead
- of this subclause.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 119</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Does
- a concept map have linkage? Reading this paragraph and 3.5
- suggests a concept map template has external linkage, but not a
- 'regular' concept map. Believe this is an oversight that the
- linkage words were not updated to provide an exception, rather
- than linkage of concept maps is intended.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- an exception that concept map templates have no linkage, or add
- concept maps to the list of entities with linkage in 3.5</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 120</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">As
- this is the first time the phrase &ldquo;parameter pack&rdquo;
- appears in Ch 14 I would like to see the section 8.3.5 referenced
- here (as well as in 14.1p17).</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Insert
- &ldquo;(8.3.5)&rdquo; after &ldquo;parameter pack&rdquo; </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 121</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- example (that follows the normative text) has no begin example
- marker</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Prefix
- the example code with &quot;[ Example:&quot; </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 29</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">14.3
- [Template arguments]</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Constant
- expressions of any literal type should be allowed as template
- arguments.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 53</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">14.5.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">If
- the requirements of a constrained member that is a copy
- constructor, copy assignment operator, or destructor are not
- satisfied, then that user-declared special function will not
- exist. It appears that, in this case, the special function will
- then be </FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><I>implicitly</I></FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">
- defined, which is likely to either (a) fail to compile or (b)
- produce a function with the wrong semantics. For example:</FONT></FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template&lt;ObjectType
- T&gt; class vector {</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">T*
- first, last, end;</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">public:</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">requires
- CopyConstructible&lt;T&gt; vector(const vector&amp;);</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">};</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">If
- instantiated with a type that is not CopyConstructible, vector
- will get an implicitly-defined copy constructor that performs a
- copy of the pointers.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Add
- to 14.5.1p5:</FONT></P>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">If
- the constrained member is a copy constructor (12.8), destructor
- (12.4), or copy assignment operator and its template requirements
- are not satisfied, then a copy constructor, destructor, or copy
- assignment operator, respectively, with the same signature as the
- constrained member (after substituting the class template&rsquo;s
- template arguments for its template parameters) will be declared
- as a deleted function (8.4).</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 122</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14.5.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Variadic
- templates should be supported in axioms. There are axioms in the
- library that rely on this feature, such as the FrontEmplacement
- axiom in FrontEmplacementContainer (23.1.6.1p10)</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- clarification in p2 that function parameter packs can be used to
- declare axioms, much like p1 clarifies they can be used to declare
- concepts as well as templates.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 30</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">14.5.7
- [Template aliases]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">When
- are two template alias names equivalent?</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">E.g.
- given</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template&lt;template&lt;class&gt;
- class&gt; struct X { };</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template&lt;typename,typename&gt;
- struct Y { };</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template&lt;typename
- T&gt;</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">using
- Z1 = Y&lt;int,T&gt;;</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template&lt;typename
- T&gt;</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">using
- Z2 = Y&lt;int,T&gt;;</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Are
- the types X&lt;Z1&gt; and X&lt;Z2&gt; equivalent?</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">We
- would suggest yes (since Z1&lt;T&gt; and Z2&lt;T&gt; are the same
- for all T), but we do not see any wording to that effect.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 17</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">14.7.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">nd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 15</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">if that namespace is inline,
- any namespace from its enclosing namespace set.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">if
- that namespace is inline, any namespace </FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#339966">forming</FONT><FONT SIZE=2 STYLE="font-size: 9pt">
- its enclosing namespace set.</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;from&quot; with &quot;forming&quot;</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-14</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">14.7.3
- </FONT>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">p1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-14
- The bulleted list neither addresses &quot;member function template
- of a class&quot; nor &quot;member class template of a class&quot;.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the respective bullets.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 18</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">14.7.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">nd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 2</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">nd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">any namespace from its
- enclosing namespace set</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">any
- namespace </FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#339966">forming</FONT><FONT SIZE=2 STYLE="font-size: 9pt">
- its enclosing namespace set</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;from&quot; with &quot;forming&quot;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 19</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">14.8.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo, duplicated &quot;is&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;At
- certain points in the template argument deduction process it <U>is
- is</U> necessary&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Remove one</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 54</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">14.9
- [concept],</FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">14.10
- [temp.constrained]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ge</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Concepts is
- of course the largest new feature in C++0x (in terms of new text
- inserted into the wording), and already we have found some
- significant defects with it. So far nothing devastating has been
- found, but more time is needed to shake more bugs out.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">I
- propose no specific change here. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 55</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">14.9.1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 6</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- paragraph number is in the wrong place, causing a grammar rule to
- be indented more than its fellows.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the paragraph number so as to follow the grammar rules, thus
- numbering the single sentence, &ldquo;The body of a concept &hellip;
- .&rdquo;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 56</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">14.9.1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 6</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- sentence contains two references to 14.9.1.3 [concept.req].</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Change
- the second such reference (at the end of the sentence) to 14.9.1.4
- [concept.axiom].</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 57</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">14.9.1.4</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">A
- word is misplaced, changing the intended meaning.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &ldquo;only find &hellip; if&rdquo; to &ldquo;find &hellip; only
- if&rdquo;.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 58</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">14.9.1.4</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- listed phrases are not grammatically parallel.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Insert
- &ldquo;in&rdquo; before &ldquo;one&rdquo; so as to obtain &ldquo;...
- in the concept, in one of its less refined concepts, or in an
- associated requirement.&rdquo;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 59</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">14.9.1.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Axioms
- are under-specified and provide little benefit to programmers, so
- they should be removed from the working paper. The optimizations
- permitted by axioms (see 14.9.1.4p4-5) are not compulsory (and,
- therefore, programmers cannot rely on them) and the semantics
- expressed by axioms cannot be verified by any implementation. The
- resulting specification has lead to great confusion (see the
- reflector thread &ldquo;Are floating point types Regular?&rdquo;
- starting with c++std-lib-22717). Given the level of confusion and
- the inability to verify the correctness of axioms, it is likely
- that many axioms written by programmers (including those specified
- in the candidate draft) will be incorrect.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- clause 14.9.1.4 [concept.axiom]</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 2.11p1, remove &ldquo;axiom&rdquo; from the list of keywords.</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 14.5.8p7, remove &ldquo;, or if the resulting concept map fails to
- satisfy the axioms of the corresponding concept&rdquo;</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 14.9.1p6, remove axiom-definition from the list of grammar
- productions for concept-member-specifier. Remove &ldquo;, and
- axioms&rdquo; from the final sentence, and instead &ldquo;and&rdquo;
- prior to &ldquo;associated requirements&rdquo; in the final
- sentence.</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- paragraph 14 of clause 14.9.2.</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 14.10.1p6, remove the sentence, &ldquo;When the
- concept-instance-alias-def appears in the optional requires-clause
- of an axiom-definition (14.9.1.4), the potential scope of the
- identifier begins at its point of declaration and terminates at
- the end of the axiom-de&#64257;nition.&rdquo;</FONT></FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=3 FACE="Helvetica, sans-serif">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- clauses 20.2.5, 20.2.8, 23.1.6.1, 23.1.6.2, and 24.1.4, remove the
- axiom-definitions and replace them with paragraphs (denoted
- Requires, Postconditions, or Effects, as appropriate) that
- express the intended semantics of the concepts from which the
- axiom-definitions were removed.</FONT></FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 24.1.4p2, replace the word &ldquo;axiom&rdquo; with &ldquo;condition.&rdquo;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 31</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">14.9.1.4
- [Axioms]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">This
- section states that an axiom-definition defines a new semantics
- axiom but is unusually vague as to what those semantics might be.</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- use of the '==' and '!=' with completely new semantics, unrelated
- to anything we have seen before in C++ is both unwise and
- confusing, especially if the types involved in the expressions
- happen to have operator== and operator!= defined.</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 10pt" FACE="Consolas, monospace">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">We
- strongly suggest use of different tokens, e.g. </FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Wingdings">&#61683;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">,
- and opposed to this obscure usage/overload.</FONT></FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- description is very vague. How many times is an implementation
- permitted to replace one expression by another one when they have
- side effects?</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-15</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">14.9.1.4</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-15
- There is no implementation experience for axioms. Use of axioms is
- an area of active scientific research. It is likely that syntax
- changes will become necessary to make good use of axioms; having
- the syntax space already crowded is unhelpful. Axioms ought to be
- useful in concepts applicable to floating-point types (such as
- EqualityComparable), but IEEE floating-point types have special
- values such as NaN violating the axioms.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- section 14.9.1.4 and any reference to axioms in the rest of the
- proposed standard other than the keyword reservation in section
- 2.11.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 123</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14.9.1.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">auto
- concepts and axioms are incompatible. An axiom defines the
- semantics of an operaton or set of operations that describes the
- run time behaviour. A concept describes purely syntactic
- requirements at compile time. Where an auto concept will match
- anything that meets the syntax requirements, there is no way to
- know if the axioms will be met or not, and no way to opt out via
- some kind of negative concept map.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a paragraph making axioms ill-formed inside an auto concept.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK<BR> 124</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14.9.1.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Spelling
- mistake, double-e in were.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">weere
- -&gt; were</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 125</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14.9.1.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- implicit equality comparison operator available to axioms has no
- semantic. It is not clear what expressing the condition if( a == b
- ) { conditional-axiom } would mean if a and b are not truly
- EqualityComparable. We suspect the intent of the 'implicit
- defefinition' is to support declaring the equivalence of
- statements, a context where the operator will not actually be
- evaluated.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Define
- the semantics of the implicitly declared comparison operators, or
- restrict their usage to declaring equivalence between statements.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 126</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14.9.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">41</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- paragraph contains the only definition of the underlying_type
- member - but it's a note, so not normative.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the second sentence to the Requires clause in paragraph 42.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 127</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14.9.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- a diagram clearly showing refinement relationship between the
- different support concepts. Several were created during
- development of this clause and they were very helpful.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- the diagram. </FONT>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 128</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14.9.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">It
- is surprising for many people that non-copyable move-only types
- can be used with a return statement, and so Returnable does not
- always imply CopyConstructible.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">A
- non-normative note: [Note: 'move only' types that are
- constructible from rvalue references may be Returnable, but not
- CopyConstructible(20.1.8) - end note]</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 20</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">14.9.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">nd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.2in; text-indent: -0.2in; margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Trivially copyable type was
- added in &ldquo;3.9 Types&rdquo;, so we think that it is necessary
- to add concept to trivially copyable type like
- &ldquo;TriviallyCopyableType&rdquo;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.2in; text-indent: -0.2in; margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add TriviallyCopyableType that
- is trivially copyable type as concept.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 129</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">14.10.1,
- 20.1.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- should be possible to support boolean constant expressions as
- requirements without resorting to defining the True concept in the
- library. Boolean expressions are very likely to be constraints
- when deadline with non-type template parameters and variadic
- templates, and constraints in these cases should feel just as
- natural as constraints on the type system.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the True concept and library subclause 20.1.2. Provide support in
- 14.10.1 for boolean constant expressions as constraints. This may
- involve overloading the true keyword to disambiguate but ideally
- would not.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 60</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">14.10.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- use of &amp;&amp; as the separator for a list of requirements has
- shown itself to be a serious teachability problem. The mental
- model behind &lsquo;&amp;&amp;&rsquo; treats concepts as simple
- predicates, which ignores the role of concepts in type-checking
- templates. The more programmers read into the &lsquo;&amp;&amp;&rsquo;
- (and especially try to fake || with &amp;&amp; and !), the harder
- it is for them to understand the role of concept maps. Simply
- changing the separator to &lsquo;,&rsquo; would eliminate a
- significant source of confusion.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Replace
- </FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">requirement-list:</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">requirement-list
- ... [opt] &amp;&amp; requirement</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">requirement
- ... [opt]</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">with</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">requirement-list</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">requirement-list
- ...[opt] , requirement</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">requirement
- ... [opt]</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- 14.5.4p6, replace the first sentence with: </FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- instantiation of an expansion produces a comma-separated list E1,
- E2, ..., EN, where N is the number of elements in the pack
- expansion parameters.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 130</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">With
- the new crrent_exception API it is possible to capture a reference
- to an exception that will outlive its last active handler. That is
- in conflict with the sentance &quot;When the last remaining active
- handler for the exception exits by any means other than throw; the
- temporary object is destroyed and the implementation may
- deallocate the memory for the temporary object;&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Update
- sentence to allow for exceptions held in excpetion_ptr objects. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 131</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">A
- handler catching its parameter by rvalue-reference is
- syntactically valid, but will never be activated.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Disallow
- handlers catching by rvalue-reference.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 132</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">16</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">There
- are obscure cases whrere a copy constructor is not usually the
- best match to copy-initialize an object, e.g. A converting
- constructor template taking arguments by non-const reference. A
- footnote explaining such cases would be helpful, or the sentance
- could be rewritten using copy-initialization instead of directly
- calling a copy constructor.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Rewite
- using copy-initialization rather than directly invoking the copy
- constructor </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 133</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Template
- aliases have the same semantics as a typedef so should also be
- disallowed</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">add
- &quot;or alias-declaration&quot; after &quot;shall not appear in a
- typedef declaration&quot;. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 134</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- sentance &quot;An exception-specification can also include the
- class std::bad_exception (18.7.2.1).&quot; is redundant.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Either
- strike the quoted sentance, or add a note explaining why it is
- worth calling special attention to this class. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 135</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Unclear
- if std::unexpected is called before or after the function
- arguments have been destroyed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- the sequence of calling unexpected with respect to interesting
- objects, such as function arguments or partially constructed bases
- and members when called from a constructor or destructor </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 136</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Exception
- specifications have proven close to worthless in practice, while
- adding a measurable overhead to programs. The feature should be
- deprecated. The one exception to the rule is the empty throw
- specification which could serve a legitimate optimizing role if
- the requirement to call the runtime unexpected mechanism was
- relaxed in this case.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- 15.4 and the parts of 15.5 that refer to it to Appendix D. Replace
- 15.4 with a simpler specification for empty throw specifications,
- where the std::unexpected call is conditionally supported allowing
- vendors to choose between optimizing and providing runtime checks.
- Ideally require vendors to provide a mode where the runtime checks
- are always disabled. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 137</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">There
- is no mention of the current_exception API which can extend the
- lifetime of an exception object. There should at least be a
- forward reference to the library clause 18.7.5</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- another paragraph outlining 18.7.5 and the ability of an
- exception_ptr to extend the lifetime of an exception object </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 138</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.5.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- third bullet is redundant with the first, as it is a subset of the
- same conditions.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Merge
- the third bullet into the first bullet as a note or example. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 139</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.5.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">According
- to the first bullet it is perfectly alright for a library function
- to exit by throwing an exception during stack unwinding, This is
- clearly not true.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- the word 'user' from the first bullet point. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 140</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.5.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- detailed specification can fool people into thinking an exception
- will automatically be translated into bad_exception, where the
- default behaviour of std::unexcepted is to immediately call
- std::terminate();</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a note highlighting the default behaviour of std::unexpected if
- the user does not supply a hander-function </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 141</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">15.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- whole subclause is redundant due to 15.1p5 and 15.3p17</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- 15.6 </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 142</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">16.3.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- paragraph opens with &quot;[ Note&quot; but has no corresponding
- &quot;end note ]&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- &quot;end note ]&quot;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 143</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">16.3.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Example
- uses #define t(x,y.z) x ## y ## z</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &quot;x,y.z&quot; to &quot;x,y,z&quot;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">17-30</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ge/te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The active issues identified
- in WG21 N2806, C++ Standard Library Active Issues, must be
- addressed and appropriate action taken.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT COLOR="#000080" SIZE="2" style="font-size: 11pt"><U>http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Appropriate
- action would include making changes to the CD, identifying an
- issue as not requiring a change to the CD, or deferring the issue
- to a later point in time.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">General
- Comment</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Library</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ge</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- adoption of the library `constexpr' proposal was not reflected in
- the draft, despite formal WG21 committee vote.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">General
- Comment</FONT></P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 61</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">17
- onward</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- concepts core language feature is applied to only some of the
- Standard Library clauses, and even then not always consistently.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Review
- all clauses of the Standard Library, and consistently apply
- concept technology wherever possible and appropriate. The
- proposed wording in WG21 N2781 exemplifies the necessary level of
- detail.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">CA-2</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-top: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">17
- Library</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- &ldquo;<FONT SIZE=2 STYLE="font-size: 9pt">Concepts&rdquo; are a
- significant new addition to the language, but are not exploited
- uniformly in the library as documented in CD 14882.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Fix the standard library so
- that &ldquo;Concepts&rdquo; are used appropriately in the library.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 62</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">17-30</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Provide
- concepts and requirements clauses for all standard library
- templates</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 63</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">17-30</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- behavior of the library in the presence of threads is incompletely
- specified.</FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">For
- example, if thread 1 assigns to X, then writes data to file f,
- which is read by thread 2, and then accesses variable X, is thread
- 2 guaranteed to be able to see the value assigned to X by thread
- 1? In other words, does the write of the data &quot;happen before&quot;
- the read?</FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Another
- example: does simultaneous access using operator at() to different
- characters in the same non-const string really introduce a data
- race?</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">17
- through 30</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-2
- Marking a constructor with &quot;explicit&quot; has semantics even
- for a constructor with zero or several parameters: Such a
- constructor cannot be used with list-initialization in a
- copy-initialization context, see 13.3.1.7. The standard library
- apparently has not been reviewed for marking non-single-parameter
- constructors as &quot;explicit&quot;.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Consider
- marking zero-parameter and multi-parameter constructors &quot;explicit&quot;
- in classes that have at least one constructor marked &quot;explicit&quot;
- and that do not have an initializer-list constructor.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 21</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">17 Library</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">21.2, 21.4,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27.2,
- 27.6, 27.7, 27.8.1, 28.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Support of char16_t/char32_t
- is insufficient. The basic_xxx classes of &lt;iostream&gt;,
- &lt;fstream&gt;, &lt;regex&gt;, etc. does not have typedefs for
- char16_t/char32_t.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Functions such as stoi,
- to_string in &lsquo;21.4 Numeric Conversion&rsquo; does not
- support char16_t/char32_t types.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add commented lines
- corresponding to char16_t, char32_t.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">21.2 paragraph1 </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std { </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">... </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">// 21.4: numeric
- conversions </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">... </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">int stoi(const
- u16string&amp; str, size_t *idx = 0, int base = 10); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">long stol(const
- u16string&amp; str, size_t *idx = 0, int base = 10); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">unsigned long
- stoul(const u16string&amp; str, size_t *idx = 0, int base = 10); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">long long stoll(const
- u16string&amp; str, size_t *idx = 0, int base = 10); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">unsigned long long
- stoull(const u16string&amp; str, size_t *idx = 0, int base = 10); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">float stof(const
- u16string&amp; str, size_t *idx = 0); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">double stod(const
- u16string&amp; str, size_t *idx = 0); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">long double stold(const
- u16string&amp; str, size_t *idx = 0); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">u16string
- to_u16string(long long val); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">u16string
- to_u16string(unsigned long long val); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">u16string
- to_u16string(long double val); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">int stoi(const
- u32string&amp; str, size_t *idx = 0, int base = 10); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">long stol(const
- u32string&amp; str, size_t *idx = 0, int base = 10); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">unsigned long
- stoul(const u32string&amp; str, size_t *idx = 0, int base = 10); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">long long stoll(const
- u32string&amp; str, size_t *idx = 0, int base = 10); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">unsigned long long
- stoull(const u32string&amp; str, size_t *idx = 0, int base = 10); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">float stof(const
- u32string&amp; str, size_t *idx = 0); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">double stod(const
- u32string&amp; str, size_t *idx = 0); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">long double stold(const
- u32string&amp; str, size_t *idx = 0); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">u32string
- to_u32string(long long val); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">u32string
- to_u32string(unsigned long long val); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">u32string
- to_u32string(long double val); </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">27.2 </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std { </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">... </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef basic_ios&lt;char&gt;
- ios; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ios&lt;wchar_t&gt; wios; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ios&lt;char16_t&gt; u16ios; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ios&lt;char32_t&gt; u32ios; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">... </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ifstream&lt;wchar_t&gt; wifstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ofstream&lt;wchar_t&gt; wofstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_fstream&lt;wchar_t&gt; wfstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_streambuf&lt;char16_t&gt; u16streambuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_istream&lt;char16_t&gt; u16istream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ostream&lt;char16_t&gt; u16ostream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_iostream&lt;char16_t&gt; u16iostream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringbuf&lt;char16_t&gt; u16stringbuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_istringstream&lt;char16_t&gt; u16istringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ostringstream&lt;char16_t&gt; u16ostringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringstream&lt;char16_t&gt; u16stringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_filebuf&lt;char16_t&gt; u16filebuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ifstream&lt;char16_t&gt; u16ifstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ofstream&lt;char16_t&gt; u16ofstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_fstream&lt;char16_t&gt; u16fstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_streambuf&lt;char32_t&gt; u32streambuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_istream&lt;char32_t&gt; u32istream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ostream&lt;char32_t&gt; u32ostream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_iostream&lt;char32_t&gt; u32iostream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringbuf&lt;char32_t&gt; u32stringbuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_istringstream&lt;char32_t&gt; u32istringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ostringstream&lt;char32_t&gt; u32ostringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringstream&lt;char32_t&gt; u32stringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_filebuf&lt;char32_t&gt; u32filebuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ifstream&lt;char32_t&gt; u32ifstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ofstream&lt;char32_t&gt; u32ofstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <U>&nbsp;<FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_fstream&lt;char32_t&gt; u32fstream;</FONT></FONT></U><FONT SIZE=2 STYLE="font-size: 9pt">
- </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">... </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- state&gt; class fpos; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- fpos&lt;char_traits&lt;char&gt;::state_type&gt; streampos; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- fpos&lt;char_traits&lt;wchar_t&gt;::state_type&gt; wstreampos; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- fpos&lt;char_traits&lt;char16_t&gt;::state_type&gt; u16streampos;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- fpos&lt;char_traits&lt;char32_t&gt;::state_type&gt; u32streampos;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">27.6</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std { </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class basic_istream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_istream&lt;char&gt; istream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_istream&lt;wchar_t&gt; wistream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- basic_istream&lt;char16_t&gt; u16istream;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_istream&lt;char32_t&gt; u32istream;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class basic_iostream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_iostream&lt;char&gt; iostream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_iostream&lt;wchar_t&gt; wiostream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- basic_iostream&lt;char16_t&gt; u16iostream;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_iostream&lt;char32_t&gt; u32iostream;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std { </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class basic_ostream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ostream&lt;char&gt; ostream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ostream&lt;wchar_t&gt; wostream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- basic_ostream&lt;char16_t&gt; u16ostream;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ostream&lt;char32_t&gt; u32ostream;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">27.7 paragraph 1 </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std { </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt;, </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">class
- Allocator = allocator&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class basic_stringbuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringbuf&lt;char&gt; stringbuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringbuf&lt;wchar_t&gt; wstringbuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- basic_stringbuf&lt;char16_t&gt; u16stringbuf;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringbuf&lt;char32_t&gt; u32stringbuf;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt;, </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">class
- Allocator = allocator&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class
- basic_istringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_istringstream&lt;char&gt; istringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_istringstream&lt;wchar_t&gt; wistringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- basic_istringstream&lt;char16_t&gt; u16istringstream;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_istringstream&lt;char32_t&gt; u32istringstream;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt;, </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">class
- Allocator = allocator&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class
- basic_ostringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ostringstream&lt;char&gt; ostringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ostringstream&lt;wchar_t&gt; wostringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- basic_ostringstream&lt;char16_t&gt; u16ostringstream;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ostringstream&lt;char32_t&gt; u32ostringstream;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt;, </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">class
- Allocator = allocator&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class
- basic_stringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringstream&lt;char&gt; stringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringstream&lt;wchar_t&gt; wstringstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringstream&lt;char16_t&gt; u16stringstream;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_stringstream&lt;char32_t&gt; u32stringstream;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">27.8.1 paragraph 1</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
-
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std { </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class basic_filebuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_filebuf&lt;char&gt; filebuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_filebuf&lt;wchar_t&gt; wfilebuf; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- basic_filebuf&lt;char16_t&gt; u16filebuf;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_filebuf&lt;char32_t&gt; u32filebuf;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class basic_ifstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ifstream&lt;char&gt; ifstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ifstream&lt;wchar_t&gt; wifstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- basic_ifstream&lt;char16_t&gt; u16ifstream;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ifstream&lt;char32_t&gt; u32ifstream;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class basic_ofstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ofstream&lt;char&gt; ofstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ofstream&lt;wchar_t&gt; wofstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- basic_ofstream&lt;char16_t&gt; u16ofstream;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_ofstream&lt;char32_t&gt; u32ofstream;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class
- charT, class traits = char_traits&lt;charT&gt; &gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">class basic_fstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_fstream&lt;char&gt; fstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_fstream&lt;wchar_t&gt; wfstream; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef
- basic_fstream&lt;char16_t&gt; u16fstream;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_fstream&lt;char32_t&gt; u32fstream;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">28.4 </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std { </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">... </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_regex&lt;char&gt; regex; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_regex&lt;wchar_t&gt; wregex; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_regex&lt;char16_t&gt; u16regex;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- basic_regex&lt;char32_t&gt; u32regex;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">... </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef sub_match&lt;const
- char*&gt; csub_match; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef sub_match&lt;const
- wchar_t*&gt; wcsub_match; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef sub_match&lt;const
- char16_t*&gt; u16csub_match;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef sub_match&lt;const
- char32_t*&gt; u16csub_match;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- sub_match&lt;string::const_iterator&gt; ssub_match; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- sub_match&lt;wstring::const_iterator&gt; wssub_match; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- sub_match&lt;u16string::const_iterator&gt; u16ssub_match;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- sub_match&lt;u32string::const_iterator&gt; u32ssub_match;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">... </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- match_results&lt;const char*&gt; cmatch; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- match_results&lt;const wchar_t*&gt; wcmatch; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- match_results&lt;const char16_t*&gt; u16cmatch;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- match_results&lt;const char32_t*&gt; u32cmatch;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- match_results&lt;string::const_iterator&gt; smatch; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- match_results&lt;wstring::const_iterator&gt; wsmatch; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- match_results&lt;u16string::const_iterator&gt; u16smatch;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- match_results&lt;u32string::const_iterator&gt; u32smatch;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">... </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_iterator&lt;const char*&gt; cregex_iterator; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_iterator&lt;const wchar_t*&gt; wcregex_iterator; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_iterator&lt;const cha16r_t*&gt;
- u16cregex_iterator;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_iterator&lt;const char32_t*&gt;
- u32cregex_iterator;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_iterator&lt;string::const_iterator&gt; sregex_iterator; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_iterator&lt;wstring::const_iterator&gt; wsregex_iterator; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_iterator&lt;u16string::const_iterator&gt;
- u16sregex_iterator;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_iterator&lt;u32string::const_iterator&gt;
- u32sregex_iterator;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">... </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_token_iterator&lt;const char*&gt;
- cregex_token_iterator; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_token_iterator&lt;const wchar_t*&gt;
- wcregex_token_iterator; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_token_iterator&lt;const char16_t*&gt;
- u16cregex_token_iterator;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_token_iterator&lt;const char32_t*&gt;
- u32cregex_token_iterator;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_token_iterator&lt;string::const_iterator&gt;
- sregex_token_iterator; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_token_iterator&lt;wstring::const_iterator&gt;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="zxx">&#12288;&#12288;&#12288;</SPAN></FONT><FONT SIZE=2 STYLE="font-size: 9pt">wsregex_token_iterator;
- </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_token_iterator&lt;u16string::const_iterator&gt;
- u16sregex_token_iterator;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;<FONT SIZE=2 STYLE="font-size: 9pt">typedef
- regex_token_iterator&lt;u32string::const_iterator&gt;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="zxx">&#12288;</SPAN></FONT><FONT SIZE=2 STYLE="font-size: 9pt">u32sregex_token_iterator;
- </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 144</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">List
- of contents of library should be extened to cover new clauses</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- &quot;regular expressions, atomic operations and threads&quot; </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 145</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><SPAN LANG="en-US">Summary
- of numeric facilities should mention random numbers</SPAN></FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- random number framework to the list of library facilities</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 146</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a summary paragraph for regular expressions</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a summary paragraph for regular expressions </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 147</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a summary paragraph for threads</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a summary paragraph for threads </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 148</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 12 is mentioned in and relates to section 17.2, but has been
- pushed down to appear directly after the title of section 17.3
- which is rather unfortunate/confusing for the reader.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Make
- sure tables are rendered in the section to which they relate.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 149</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">For
- consistency with narrow-oriented and wide-oriented streams, we
- should add terms for streams of Unicode character sequences</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Define
- Utf16-oriented stream classes and Uft32-oriented stream classes
- for streams of char16_t/char32_t values.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 150</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- addition of move semantics to the language means that many library
- APIs leave an object in a safely-destructible state, where no
- other operations can safely be performed unless it is assigned a
- new value. Library presentation would be simplified and made more
- precise if we introduce a term for this state. By analogy with
- singular iterators suggest the term 'singular object' or 'the
- object is in a singular state'.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Define
- 'singular state' such that an object with a singular state can
- only be assigned to or safely destroyed. Assiging a new value
- typically removes the singular state. Note that objects with a
- singular state may not be safely copied, so you cannot put an
- object into a singular state by copying another object in a
- singular state. Use this new term in the postcondition of all
- library APIs that move from an rvalue reference. It might also be
- used to simplify the definition of singular iterator to an
- iterator value with a singular state.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 151</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.3.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Missing
- crossreference to 17.3.17 [defns.repositional.stream]</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- cross-reference in the existing empty brackets </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 152</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.3.12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Object
- state is using a definition of object (instance of a class) from
- outside the standard, rather than the 'region of storage'
- definiton in 1.8p1</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- terms and usage</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 153</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.3.17</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">If
- a repositional stream can only seek to a position previously
- encountered, then an arbitrary-positional-stream cannot satisfy
- this definition, as cross-referenced in 17.3.17</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- the word 'only'. A note might be added to reinforce the intent </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK<BR> 154</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.3.20</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Missing
- definition of a stable partition algorithm</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- definition from 25.2.12p7 </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 155</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.3.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- clause 28 to list that use this definition of character</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- clause 28 to list that use this definition of character </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 156</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.3.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- regular expressions to set of templates using character container
- type</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- regular expressions to set of templates using character container
- type </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 157</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.5.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- concepts to the ordered list of presentation</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- concepts into the sequence</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 158</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.5.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">templates
- are neither classes nor functions</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- 'classes' and 'functions' with 'classes and class templates' and
- 'functions and function templates' </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 159</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.5.2.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Footnote
- 152</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- informative footnote was relevant in 1998, not 2008. The term
- 'existing vendors' may imply something different now</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- the footnote, or replace 'existing' with 'original' or similar </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 160</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.5.2.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">requires
- is now a keyword with a specific meaning related to concepts, and
- its use in library specifcation may be confusing. Generally the
- Requires clause is used to make requirements on the caller, not
- the library, so typically providing runtime pre-conditions.
- Suggest a new name to refflect that. Note that Clause 30 already
- seems to be written to this convention.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- 'Requires' with 'Preconditions' </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 161</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.5.2.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- paragraph is redundant as the definition of the term 'handler
- function' is already provided in 17.3. Are we in danger of proving
- two definitions of the same terms? Which is the 'controlling'
- definition?</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- 17.5.2.4p4 </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 162</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.5.2.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Clause
- 30 makes use of a 'Synchronization' semantic element, that
- frequently appears either between Effects: and Postconditions:, or
- between Returns: and Throws:</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- 'Synchronization' to the list either between Effects: and
- Postconditions:, or between Returns: and Throws:.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 163</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.5.2.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Many
- functions are defined as &quot;Effects: Equivalent to a...&quot;,
- which seems to also define the preconditions, effects, etc. But
- this is not made clear.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Introduce
- an explicit &quot;Equivalent to&quot;, which defines all of the
- properties of the function.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 164</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.5.3.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- phrasing predates concepts. While this kind of description is
- still used, the examples provided are now all concepts, and should
- be replaced with appropriate examples</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Use
- better names for the examples. Ideally totally replace the need by
- constraining all templates in library, so that real concepts are
- all that is needed. Note if retained that CopyConstructible is
- mis-spelled.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 165</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.5.3.2.2,
- 17.5.3.2.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">constraints
- on bitmask and enumation types were supposed to be tightened up as
- part of the motivation for the constexpr feature - see paper n2235
- for deails</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Adopt
- wording in line with the motivation described in N2235 </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 166</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">17.5.3.2.4.1,
- 17.5.3.3</FONT></P>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">List
- of library clauses should go up to 30, not 27</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- initial refernce to ch27 with ch30 </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 167</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.5.3.4
- Private members</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Comment
- marker in wrong place.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Change:
- // streambuf* sb; exposition only to streambuf* sb; // exposition
- only To reflect actual usage.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 168</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">We
- should make it clear (either by note or normatively) that
- namespace std may contain inline namespaces, and that entities
- specified to be defined in std may in fact be defined in one of
- these inline namespaces. (If we're going to use them for
- versioning, eg when TR2 comes along, we're going to need that.)</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;namespace std or namespaces nested within namespace std&quot;
- with &quot;namespace std or namespaces nested within namespace std
- or inline namespaces nested directly or indirectly within
- namespace std&quot;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 169</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- phrasing contradicts later freedom to implement the C standard
- library portions in the global namespace as well as std.
- (17.6.2.3p4)</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Resolve
- conflict in either place</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 170</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.2.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">One
- of goals of C++0x is to make language easier to teach and for
- 'incidental' programmers. The fine-grained headers of the C++
- library are valuable in large scale systems for managing
- dependencies and optimising build times, but overcomplicated for
- simple development and tutorials. Add additional headers to
- support the whole library through a single include statement.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a new header &lt;std&gt; that has the effect of including
- everything in tables 13 and 14, except &lt;iosfwd&gt; and
- &lt;cassert&gt;. Add an additional header &lt;fwd&gt; that adds
- all declarations from &lt;std&gt; but no definitions. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 171</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.2.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Does
- freestanding implementation require a full implementation of all
- listed headers? The reference to abort, at_exit and exit is
- confusing. Is a conforming implementation allow to deliver partial
- forms of these headers? If so which ones? Are empty versions of
- everything but &lt;cstdlib&gt; conforming?</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Either
- strike the references to abort, at_exit and exit, or clarify which
- headers only require partial support.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 172</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.2.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">No
- reference to new functions quick_exit and at_quick_exit</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- reference to quick_exit and at_quick_exit </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 173</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.2.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">table
- 15</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;initializer_list&gt;
- is missing from headers required in freestanding implementations.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- 18.8, initializer lists, &lt;initializer_list&gt;, to the end of
- the table.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 23</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">17.6.2.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">nd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, Table 15</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There is a freestanding
- implementation including &lt;type_traits&gt;, &lt;array&gt;,
- &lt;ratio&gt;, lately added to Table 13, C++ library
- headers.<BR>Programmers think them useful and hope that these
- headers are also added to Table 15, C++ headers for freestanding
- implementations, that shows the set of headers which a
- freestanding implementation shall include at least.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add &lt;type_traits&gt;,
- &lt;array&gt;, &lt;ration&gt; to Table 15.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 174</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.3.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- phrasing is mildly ambiguous when using the word 'it' to refer
- back to the header - an unfotunate reading might confuse it with
- the translate unit, which is the subject of the surrounding
- clause.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- 'the first reference to any of the entities declared in that
- header by the translation unit' with 'the first reference to any
- of the entities that header declares in the translation unit' </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 175</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.4.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Local
- types can now be used to instantiate templates, but don't have
- external linkage</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the reference to external linkage </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 176</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.4.3.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Footnote
- 175</FONT></P>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Reference
- to namespace ::std should be 17.6.4.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- referfence from 17.6.4.3 to 17.6.4.2 </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 177</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.4.3.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Sentence
- is redundant as double underscores are reserved in all contexts by
- 17.6.4.3.3</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- the sentence </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 178</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.4.8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- last sentence of the third bullet &quot;Operations on such types
- can report a failure by throwing an exception unless otherwise
- specified&quot; is redundant as behaviour is already undefined.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- the sentence </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 179</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.4.8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">According
- to the 4th bullet there is a problem if &quot;if any replacement
- function or handler function or destructor operation throws an
- exception&quot;. There should be no problem throwing exceptions so
- long as they are caught within the function.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- the word 'throws' with 'propogates' </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 22</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">17.6.5.7</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The statement below describes
- relation among two or more threads using words &ldquo;between
- threads&rdquo;:<BR>[Note: This means, for example, that
- implementations can&rsquo;t use a static object for internal
- purposes without synchronization because it could cause a data
- race even in programs that do not explicitly share objects between
- threads. &mdash;end note ]</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">In such case, &ldquo;among&rdquo;
- is preferred instead of &ldquo;between&rdquo;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Change &quot;between threads&quot;
- to &quot;among threads&quot;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There are same cases in 17.6.1
- paragraph 2, 17.6.5.7 paragraph 6, 30.1 paragraph 1, 30.3.1
- paragraph 1 also.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 180</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.5.10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1,
- 4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- should not be possible to strengthen the exception specification
- for virtual functions as this could break user code. Note this is
- not a problem in practice as there are no virtual functions with
- exception specifications in the current library, other than empty
- throw specifications which it is not possible to strengthen.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- restriction that exception specification of virtual functions
- cannot be tightened.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 181</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.5.10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Footnote
- 186</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- footnote is wrong. C library functions do not have any exception
- specification, but might be treated as if they had an empty throw
- specification</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- that this note does not mean the functions are genuinely declared
- with the specification, but are treated as-if. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 182</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">17.6.5.10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Footnote
- 188</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is very helpful to assume all exceptions thrown by the standard
- library derive from std::exception. The 'encouragement' of this
- note should be made normative.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Make
- this footnote normative</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 184</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18
- -&gt; 30</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- new alias-declaration syntax is generally easier to read than a
- typedef declaration. This is especially true for complex types
- like function pointers.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- all typedef declarations in the standard library with
- alias-declarations, except in the standard C library.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 24</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">18</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">nd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, Table 16</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Subclauses are listed in Table
- 16 as:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;18.6 Type identification
- &hellip;&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;18.8 Initializer lists
- &hellip;&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;18.7 Exception handling
- &hellip;&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.06in; text-indent: -0.06in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Sort them in the increasing
- order <BR>&quot;18.6 Type identification &hellip;&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;18.7 Exception handling
- &hellip;&quot;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;18.8 Initializer lists
- &hellip;&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 25</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">18.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph , last line, SEE ALSO</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">max_align_t is described in
- 18.1, so add 3.11 Alignment as the reference.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- &quot;<U>3.11,
- Alignment</U></FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#000000">&quot;
- to </FONT><FONT SIZE=2 STYLE="font-size: 9pt">SEE ALSO.</FONT></FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 32</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">18.2.1
- [Numeric limits]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- definition of numeric_limits&lt;&gt; as requiring a regular type
- is both conceptually wrong and operationally illogical. As we
- pointed before, this mistake needs to be corrected. For example,
- the template can be left unconstrained. In fact this reflects a
- much more general problem with concept_maps/axioms and their
- interpretations. It appears that the current text heavily leans
- toward experimental academic type theory.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">We
- suggest that a more pragmatic approach, in the spirit of C and
- C++, be taken so that calls to constrained function templates are
- interpreted as assertions on *values*, not necessarily semantics
- assertions on the carrier type.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-16</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">18.2.1</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">DE-16
- The class template <FONT FACE="Arial, sans-serif">numeric_limits</FONT>
- should not specify the <FONT FACE="Arial, sans-serif">Regular</FONT>
- concept requirement for its template parameter, because it
- contains functions returning NaN values for floating-point types;
- these values violate the semantics of <FONT FACE="Arial, sans-serif">EqualityComparable</FONT>.
- See also library issue 902 in WG21 document N2794 &quot;C++
- Standard Library Active Issues List (Revision R60)&quot;,
- available at
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2794.html
- .</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Specify
- a concept requirement with fewer constraints as appropriate, for
- example <FONT FACE="Arial, sans-serif">SemiRegular</FONT>.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 26</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">18.2.1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">numeric_limits does not use
- concept.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class T&gt; class
- numeric_limits&lt;const T&gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class T&gt; class
- numeric_limits&lt;volatile T&gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class T&gt; class
- numeric_limits&lt;const volatile T&gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;<U>Regular</U>
- T&gt; class numeric_limits&lt;const T&gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;<U>Regular</U>
- T&gt; class numeric_limits&lt;volatile T&gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;<U>Regular</U>
- T&gt; class numeric_limits&lt;const volatile T&gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-17</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">18.2.6
- </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">DE-17
- The class <FONT FACE="Arial, sans-serif">type_index</FONT>
- should be removed; it provides no additional functionality beyond
- providing appropriate concept maps.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Specify
- concept maps for &quot;const type_info *&quot; as required by the
- ordered and unordered containers and remove the class <FONT FACE="Arial, sans-serif">type_index</FONT>.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 185</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.3.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">There
- is no header &lt;stdint&gt;, it should either be &lt;stdint.h&gt;
- or &lt;cstdint&gt;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &lt;stdint&gt; with &lt;cstdint&gt;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-18</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">18.4</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">DE-18
- The proposed C++ standard makes a considerable number of existing
- programs that have well-defined behavior according to ISO/IEC
- 14882:2003 have undefined behavior without a diagnostic hint to
- the programmer at all. This applies to the presence of threads and
- to pointer safety (the latter was introduced to support garbage
- collection). In order to avoid requiring a full code review for
- user code, facilities should be present that allow the
- compile-time detection of the advanced features of the proposed
- C++ standard. It is expected that C++ implementations will provide
- a means (for example, a command-line switch) to turn off either or
- both of threads and garbage collection support, turning
- potentially undefined programs into well-defined ones.<BR><I>Note:</I>
- This issue is contributing significantly to Germany's overall
- &ldquo;no&rdquo; vote.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Consider
- applying the changes proposed in WG21 document N2693 &quot;Requirements
- on programs and backwards compatibility&quot;, available at
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2693.html
- .</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 186</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Footnote
- 221</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">What
- is the purpose of this comment? The standard stream objects (cin,
- cerr etc.) have a peculiar lifetime that extends beyond the
- program. They may never be destroyed so will not be responsible
- for flushing buffers at the stated time.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the footnote</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 187</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- term &quot;thread safe&quot; is not defined nor used in this
- context anywhere else in the standard.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- the intended meaing of &quot;thread safe&quot;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 188</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- function _Exit does not appear to be defined in this standard.
- Should it be added to the table of functions included-by-reference
- to the C standard?</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Depends
- on where _Exit comes from</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 189</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.4,
- 18.7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- addition of the [[noreturn]] attribute to the language will be an
- important aid for static analysis tools.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- following functions should be declared in C++ with the
- [[noreturn]] attribute: abort exit quick_exit terminate unexpected
- rethrow_exception throw_with_nested</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 27</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">18.4,
- 18.9, 18.7.2.2, 18.7.3.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There are Standard library
- functions that never return to the caller. They are explained so
- in the Standard but not declared explicitly.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Consider to add the attribute
- [[noreturn]] to such functions, </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">15.5.2 unexpected<BR> 18.4:
- abort(), exit(), quick_exit, <BR> 18.7.2.2: unexpected_handler, <BR>
- 18.7.3.1: terminate_handler, </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">18.7.6 rethrow_nested</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">18.7.6 throw_with_nested<BR>
- 18.9: longjmp.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 190</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.5.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">various</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">It
- is not entirely clear how the current specification acts in the
- presence of a garbage collected implementation.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">All
- deallocation functions taking a pointer parameter should have a
- Precondition : ptr is a safely-derived pointer value.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 191</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">According
- to the second bullet, behaviour becomes undefined (for lack of a
- specification) if the user has not yet called set_new_handler.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Rephrase
- the second bullet in terms of a new handler being installed, and
- update any definition of handler function necessary to be sure the
- term 'installed' is defined.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 192</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.5.1.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- declared signature is not compatible with the current requirement
- to throw std::length_error. It is too late to weaken the exception
- specification, so the only other change is to preserve new
- (improved) behaviour is to throw std::bad_alloc, or something
- derived from std::bad_alloc.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Fix
- 5.3.4p7 by required std::bad_alloc rather than std::length_error</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 193</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.5.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">quick_exit
- has been added as a new valid way to terminate a program in a well
- defined way</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- 3rd bullet: call either abort(), exit() or quick_exit();</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 194</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- inclusion of type_index and hash&lt;type_index&gt; in &lt;typeinfo&gt;
- brings dependencies into &lt;typeinfo&gt; which are inconsistent
- with the definition of freestanding C++ in 17.6.2.4.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- type_index and hash&lt;type_index&gt; out of &lt;typeinfo&gt; and
- into a new header, &lt;typeindex&gt;.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 28</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">18.6,
- 18.7, 19.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Errors
- reported by Exception classes are of types char or std::string
- only. For
- example, std::exception is declared with char, std::string types,
- therefore types wchar_t/wstring, char16_t/u16string, or
- char32_t/u32string can not be used.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Consider other types.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 29</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">18.7.6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">throw_with_nested does not use
- concept.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class T&gt; void
- throw_with_nested(T&amp;&amp; t); // [[noreturn]]</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;CopyConstructible
- T&gt; void throw_with_nested(T&amp;&amp; t); // [[noreturn]]</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 30</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">18.7.6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">To handle nested exceptions
- strictly, error information of tree structure will be required
- though, the nested_exception does not support tree structure. It
- is insufficient as error handling.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Consider nested_exception to
- support tree structure.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 31</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">18.7.6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">It is difficult to understand
- in which case nested_exception is applied.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Consider to add a sample
- program which rethrows exception.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 195</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- class definition of std::initializer_list contains concept-maps to
- Range which should be out of the class, and in &lt;iterator_concepts&gt;
- instead. Otherwise, it's not possible to use initializer_lists in
- a freestanding C++ implementation.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Delete
- the two concept maps from std::initializer_list.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 196</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">18.8.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Concept
- maps for initializer_list to Range should not be in language
- support headers, but instead in iterator concepts.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- section 18.8.3 and put it in 24.1.8.1 instead, so that the
- concept_maps from initializer_list to Range are specified under
- Range instead of under initializer lists; also, so that they're
- implemented in &lt;iterator_concepts&gt; instead of
- &lt;initializer_list&gt;.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 197</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">19</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">All
- the exception classes in this clause take a std::string argument
- by const reference. They should all be overloaded to accept
- std::string by rvalue rerefence for an efficient move as well.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- a constructor for every exception class in clause 19 accepting a
- std::string by rvalue reference, with the semantics that the
- passed string may be moved.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 32</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">19.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Messages returned by the
- member function what() of standard exception classes seem
- difficult to judge.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">For example, following
- messages are returned by what() of std::bad_alloc of existing
- implementations:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Compiler: Message
- returned by what()</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">---------------------------------------------</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Borland C++ 5.6.4: no named
- exception thrown</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Visual C++ 8.0: bad
- allocation</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Code Warrior 8.0: exception</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">g++ 3.4.4:
- St9exception</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">It is difficult to recognize
- what exception was thrown when using those compilers except Visual
- C++.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Consider to add footnote that
- recommends what() returns message easy to recognize what exception
- was thrown.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 64</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">19.3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P><FONT COLOR="#000000">&ldquo;</FONT> <FONT SIZE=2 STYLE="font-size: 9pt">See
- also: ISO C 7.1.4, 7.2,
- Amendment 1 4.3.</FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#000000">&rdquo;
- It is unclear why this cross reference is here. Amendment 1 was to
- C89, not C99.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Delete
- this cross reference. If necessary, expand the main text to
- include the relevant referenced text</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 65</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Scoped
- allocators and allocator propagation traits add a small amount of
- utility at the cost of a great deal of machinery. The machinery is
- user visible, and it extends to library components that don't have
- any obvious connection to allocators, including basic concepts and
- simple components like pair and tuple.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Sketch of proposed resolution:
- Eliminate scoped allocators, replace allocator propagation traits
- with a simple uniform rule (e.g. always propagate on copy and
- move), remove all mention of allocators from components that don't
- explicitly allocate memory (e.g. pair), and adjust container
- interfaces to reflect this simplification. </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">Components
- that I propose eliminating include </FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#0000ff"><SPAN STYLE="background: #ffffce">HasAllocatorType</SPAN></FONT><FONT COLOR="#000080"><U>?</U></FONT><FONT SIZE=2 STYLE="font-size: 9pt">,
- is_scoped_allocator, allocator_propagation_map,
- scoped_allocator_adaptor, and </FONT>
- <FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#0000ff"><SPAN STYLE="background: #ffffce">ConstructibleAsElement</SPAN></FONT><FONT COLOR="#000080"><U>?</U></FONT><FONT SIZE=2 STYLE="font-size: 9pt">.
- </FONT></FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 198</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- organization of clause 20 could be improved to better group
- related items, making the standard easier to navigate.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">20.6.7,
- 20.6.8, 20.6.9 and 20.6.10 should be grouped under a section
- called &quot;operator wrappers&quot; or similar. The goal of all 4
- subsections combined is to provide a functor for every operator in
- the language. 20.6.17 class template hash should numerically
- appear immediately after the operator wrappers, as they are
- functors that are used in similar ways 20.6.11, 20.6.12, 20.6.13,
- 20.6.14, 20.6.15 are strongly related to 20.6.3, and to an extent
- 20.6.2. These should all come under a subheading of &quot;function
- adapters&quot; 20.7.1, 20.7.3, 20.7.4, 20.7.5, 20.7.6, 20.7.7 and
- 20.7.10 should all be grouped as subclauses under [20.7.2
- Allocators] [20.7.12 unique_ptr] should be a sub-section of
- [20.7.13 smart pointers] [20.7.13 smart pointers] is important
- enough to have a high level bullet after [20.7 memory], suggest
- renumbering as [20.8 smart pointers] [20.7.13.7 Pointer safety] is
- nothing to do with smart pointers and should become its own
- subclause [20.7.14 Pointer safety] [20.9 date and time functions]
- should be moved under [20.8 time utilities] and retitled [20.8.6 C
- Library] (as per memory management/C Library) [20.6.18
- reference_closure] is fundamentally a language support feature and
- should move to clause 18, see separate comment [20.6.5
- reference_wrapper] should be simplified and moved into [2.2
- utility components], see separate comment [20.6.4 result_of]
- should be reorganised as a type trait - see separate comment
- Tuples and pairs are closely related so merge tuple and pair into
- the same subclause - see more general comment on this </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 199</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.1.1,
- 20.1.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- requirement that programs do not supply concept_maps should
- probably be users do not supply their own concept_map
- specializations. THe program will almost certainly supply
- concept_maps - the standard itself supplies a specialization for
- RvalueOf? references. Note that the term _program_ is defined in
- 3.5p1 and makes no account of the standard library being treated
- differently to user written code.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- the term 'program' with 'user'.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 200</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.1.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">All
- standard library use expects Predicates to be CopyConstructible,
- and this should be recognised easily without reatedly stating on
- every use-case.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Either
- require CopyConstructible&lt;F&gt; as part of Predicate, or create
- a refined concept, StdPredicate, used throughout the library that
- requires CopyConstructible as well as Callable. Consider making
- (Std)Predicate SemiRegular.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 201</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.1.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- Consistency axiom for LessThanComparable will not compile.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a requires clause to the Consistency axiomL requires
- HasLessEquals&lt;T&gt; &amp;&amp; HasGreaterEquals&lt;T&gt;, or
- split the Consistency axiom into two so that 'basic' consistency
- can be asserted regardless of the &lt;=/&gt;= requirement.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 33</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.1.5</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">LessThanComparable and
- EqualityComparable don't correspond to NaN.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Apply concept_map to these
- concepts at FloatingPointType</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 66</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.1.10</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Application
- of the &quot;Regular&quot; concept to floating-point types appears
- to be controversial (see long discussion on std-lib reflector).</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">State
- that the &ldquo;Regular&rdquo; concept does not apply to
- floating-point types.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 34</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 4</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Though N2672 pointed at adding
- &quot;#include&lt;initializer_list&gt;&quot;, it isn't reflected.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">add followings</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">#include &lt;initializer_list&gt;
- // for concept_map</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 67</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.2.1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">&para;
- 5 first sent.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Some
- connective words are missing.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Insert
- &ldquo;corresponding to&rdquo; before &ldquo;an lvalue reference
- type.&rdquo;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 35</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.2.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">&quot;stdforward&quot;
- should be &quot;std::forward&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Correct
- typo.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 202</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.2.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- references to pair in the tuple-like access to pair functions
- qualify pair with std::pair even though they are in a namespace
- std block.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the std:: qualification from these references to pair.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 68</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.2.12</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">IntegralLike</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te/ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- code defining the context is syntactically incorrect.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Insert
- a comma in two places: at the end of the third line of
- refinements, and at the end of the fourth line of refinements.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 203</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.3.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1-4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- ratio_xyz types have a misplaced '}'. For example: template &lt;class
- R1, class R2&gt; struct ratio_add { typedef see below} type; ;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the '}' to after the typedef: template &lt;class R1, class R2&gt;
- struct ratio_add { typedef see below type; };</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 36</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.4.2.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">19</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 6</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;it it&quot; should be
- &quot;it is&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct typo.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 204</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 41</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is not possible to create a variant union based on a parameter
- pack expansion, e.g. to implement a classic discriminated union
- template.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Restore
- aligned_union template that was removed by LWG issue 856.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 69</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.5</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">This
- section, dealing with tuple&lt;&gt;, should be in the same section
- as the similar utility pair&lt;&gt;.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Restructure
- Clause 20 so as to bring these similar components together.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 205</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.5.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">integral_constant
- objects should be usable in integral-constant-expressions. The
- addition to the language of literal types and the enhanced rules
- for constant expressions make this possible.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a constexpr conversion operator to class tempalate
- integral_constant: constexpr operator value_type() { return value;
- }</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 206</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.5.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">para
- 4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Currently
- the std says: &quot;In order to instantiate the template
- is_convertible&lt;From, To&gt;, the following code shall be well
- formed:&quot; But the code shown is the requirement for the result
- of is_convertible to be a true_type, not a precondition on whether
- the template can be instantiated.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change:
- &quot;In order to instantiate the template is_convertible&lt;From,
- To&gt;, the following code shall be well formed:&quot; To: &quot;The
- template is_convertible&lt;From, To&gt; inherits either directly
- or indirectly from true_type if the following code is well
- formed:&quot;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 207</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.5.6.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 36</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">suffix
- &quot;::type&quot; is missing from the some of the examples.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Change:
- Example:remove_const&lt;const volatile int&gt;::type evaluates to
- volatile int, whereas remove_const&lt;const int*&gt; is const
- int*. &mdash;end example To: Example:remove_const&lt;const
- volatile int&gt;::type evaluates to volatile int, whereas
- remove_const&lt;const int*&gt;::type is const int*. &mdash;end
- example And change: Example:remove_volatile&lt;const volatile
- int&gt;::type evaluates to const int, whereas
- remove_volatile&lt;volatile int*&gt; is volatile int*. &mdash;end
- example To: Example:remove_volatile&lt;const volatile int&gt;::type
- evaluates to const int, whereas remove_volatile&lt;volatile
- int*&gt;::type is volatile int*. &mdash;end example And change:
- Example:remove_cv&lt;const volatile int&gt;::type evaluates to
- int, whereas remove_cv&lt;const volatile int*&gt; is const
- volatile int*. &mdash;end example To: Example:remove_cv&lt;const
- volatile int&gt;::type evaluates to int, whereas remove_cv&lt;const
- volatile int*&gt;::type is const volatile int*. &mdash;end example</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 37</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.5.7</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 41</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.19in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There isn't a period at the
- end of enable_if's comments.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">If B is true, the member
- typedef type shall equal T; otherwise, there shall be no member
- typedef type</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">If B is true, the member
- typedef type shall equal T; otherwise, there shall be no member
- typedef type.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add &rdquo;.&rdquo;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 70</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.6</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Specifications
- now expressed via narrative text are more accurately and clearly
- expressed via executable code.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Wherever
- concepts are available that directly match this section&rsquo;s
- type traits, express the traits in terms of the concepts instead
- of via narrative text. Where the type traits do not quite match
- the corresponding concepts, bring the two into alignment so as to
- avoid two nearly-identical notions.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 71</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.6.7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 51, last row, column 3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- grammar is incorrect.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &ldquo;conversion are&rdquo; to &ldquo;conversion is&rdquo;.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 38</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.6.12.1.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.19in; text-indent: -0.19in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">add the move requirement for
- bind's return type.<BR></FONT><BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.19in; text-indent: -0.19in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">For example, assume following
- th1 and th2,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><BR>void f(vector&lt;int&gt;
- v) { }<BR><BR>vector&lt;int&gt; v{ ... };<BR>thread th1([v]{ f(v);
- });<BR>thread th2(bind(f, v));<BR><BR>When function object are set
- to thread, v is moved to th1's lambda expression in a Move
- Constructor of lambda expression becuase th1's lambda expression
- has a Move Constructor. But bind of th2's return type doesn't have
- the requirement of Move, so it may not moved but copied.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add the requirement of move to
- get rid of this useless copy.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">And also, add the
- MoveConstructible as well as CopyConstructible.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the following requirements.<BR>&quot;</FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#000000">it
- has a public move constructor that performs a member-wise move.&quot;</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add the MoveConstructible.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 39</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.6.16.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There are no requires
- corresponding to F of std::function.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class F, Allocator
- A&gt; function(allocator_arg_t, const A&amp;, F);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class F, Allocator
- A&gt; function(allocator_arg_t, const A&amp;, F&amp;&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class F, Allocator
- A&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">requires
- CopyConstructible&lt;F&gt; &amp;&amp; Callable&lt;F, ArgTypes...&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&amp;&amp;
- Convertible&lt;Callable&lt;F, ArgTypes...&gt;::result_type, R&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">function(allocator_arg_t,
- const A&amp;, F);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class F, Allocator
- A&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">requires
- CopyConstructible&lt;F&gt; &amp;&amp; Callable&lt;F, ArgTypes...&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&amp;&amp;
- Convertible&lt;Callable&lt;F, ArgTypes...&gt;::result_type, R&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">function(allocator_arg_t,
- const A&amp;, F&amp;&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 40</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.6.16.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Thougn it's &quot;Allocator
- Aloc&quot; at other places, it's &quot;Allocator A&quot; only
- std::function constructor template parameter.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class F, Allocator
- A&gt; function(allocator_arg_t, const A&amp;, F);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class F, Allocator
- A&gt; function(allocator_arg_t, const A&amp;, F&amp;&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- F, Allocator <U>Alloc</U>&gt;
- function(allocator_arg_t, const <U>Alloc</U>
- &amp;, F);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- F, Allocator <U>Alloc</U>&gt;
- function(allocator_arg_t, const <U>Alloc</U>
- &amp;, F&amp;&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 41</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.6.16.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There are no requires
- corresponding to R and Args of UsesAllocator.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class R, class...
- Args&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">concept_map
- UsesAllocator&lt;function&lt;R(Args...)&gt;, Alloc&gt; {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef Alloc
- allocator_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;<U>Returnable</U>
- R, <U>CopyConstructible</U>...
- Args&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">concept_map
- UsesAllocator&lt;function&lt;R(Args...)&gt;, Alloc&gt; {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef Alloc
- allocator_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 42</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.6.16.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The requires are wrong.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">R require Returnable, and
- ArgTypes requires CopyConstructible by a definition of function,
- then it's a mistake to designate followings by MoveConstructible.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;MoveConstructible
- R, MoveConstructible... ArgTypes&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator==(const
- function&lt;R(ArgTypes...)&gt;&amp;, nullptr_t);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;MoveConstructible
- R, MoveConstructible... ArgTypes&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator==(nullptr_t,
- const function&lt;R(ArgTypes...)&gt;&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;MoveConstructible
- R, MoveConstructible... ArgTypes&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator!=(const
- function&lt;R(ArgTypes...)&gt;&amp;, nullptr_t);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;MoveConstructible
- R, MoveConstructible... ArgTypes&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator!=(nullptr_t,
- const function&lt;R(ArgTypes...)&gt;&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;MoveConstructible
- R, MoveConstructible... ArgTypes&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(function&lt;R(ArgTypes...)&gt;&amp;,
- function&lt;R(ArgTypes...)&gt;&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;<U>Returnable</U>
- R, <U>CopyConstructible</U>...
- ArgTypes&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator==(const
- function&lt;R(ArgTypes...)&gt;&amp;, nullptr_t);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;<U>Returnable</U>
- R, <U>CopyConstructible</U>...
- ArgTypes&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator==(nullptr_t,
- const function&lt;R(ArgTypes...)&gt;&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;<U>Returnable</U>
- R, <U>CopyConstructible</U>...
- ArgTypes&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator!=(const
- function&lt;R(ArgTypes...)&gt;&amp;, nullptr_t);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;<U>Returnable</U>
- R, <U>CopyConstructible</U>...
- ArgTypes&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator!=(nullptr_t,
- const function&lt;R(ArgTypes...)&gt;&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;<U>Returnable</U>
- R, <U>CopyConstructible</U>...
- ArgTypes&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(function&lt;R(ArgTypes...)&gt;&amp;,
- function&lt;R(ArgTypes...)&gt;&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 208</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.6.17</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">std::hash
- should be implemented for much more of the standard library. In
- particular for pair, tuple and all the standard containers.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 209</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Smart
- pointers cannot be used in constrained templates</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- constraints for smart pointers </FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 213</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.7.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">std::allocator
- should be constrained to simplify its use on constrained contexts.
- This library component models allocation from free store via the
- new operator so choose constraints to match. The Allocator concept
- allows for a wider variety of allocators that users may choose to
- supply if their allocation model does not require operator new,
- without impacting the requirements of this template.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- primary allocator template should be constrained to require
- ObjectType&lt;T&gt; and FreeStoreAllocatable&lt;T&gt;. Further
- operations to be constrained as required.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 214</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.7.8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">raw_storage_iterator
- needs constraining as an iterator adaptor to be safely used in
- constrained templates</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Constrain
- the raw_storage_iterator template</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 210</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.7.11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Specialized
- algorithms for memory managenment need requirements to be easily
- usable in constrained templates</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- constraints for all algorithms in 20.7.11</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-20</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.7.12</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-20
- The section heading and the first sentence use the term &quot;template
- function&quot;, which is undefined.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;template function&quot; by &quot;function template&quot;. </FONT>
- </P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 72</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.7.12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bind should support move-only
- functors and bound arguments.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-21</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.7.12.1.3</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-21
- The specification for bind claims twice that &quot;the values and
- types for the bound arguments v1, v2, ..., vN are determined as
- specified below&quot;. No such specification appears to exist.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the missing specification in the same section, or add a
- cross-reference indicating the section where the specification
- appears.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 211</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.7.12.2.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- nullptr_t type was introduced to resolve the null pointer literal
- problem. It should be used for the assignemnt operator, as with
- the constructor and elsewhere through the library.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- signature here and in the synopsis to: unique_ptr&amp;
- operator=(nullptr_t); Strike the sentance an note before the
- Effects clause.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 212</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.7.13.7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- pointer-safety API is nothing to do with smart pointers, so does
- not belong in 20.7.13. In fact it is a set of language support
- features are really belongs in clause 18, with the contents
- declared in a header that deals with language-support of memory
- management.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- this specification to 18.5. Move the declarations into the header
- &lt;new&gt;.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-22</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.7.16.2</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-22
- The conditions for deriving from std::unary_function and
- std::binary_function are unclear: The condition would also be
- satisfied if ArgTypes were std::vector&lt;T1&gt;, because it
- (arguably) &quot;contains&quot; T1.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Consider
- stating the conditions in normative prose instead of in comments
- in the class definition. Use &quot;consists of&quot; instead of
- &quot;contains&quot;. Consider using &quot;if and only if&quot;
- instead of &quot;iff&quot;.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 73</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">20.7.18</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- std::reference_closure template is redundant with std::function
- and should be removed.</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">std::reference_closure
- is a premature optimization that provides a limited subset of the
- functionality of std::function intended to improve performance in
- a narrow use case. However, the &ldquo;parallel application
- performance&rdquo; benchmark used to motivate the inclusion of
- std::reference_closure was flawed in several ways:</FONT></P>
- <OL START=3>
- <LI><P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">it
- failed to enable a common optimization in std::function
- (implemented by all vendors), exacting a large and unrealistic
- penalty for copying std::function instances, and</FONT></P>
- <LI><P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">it
- failed to account for parallel scheduler overhead or
- realistically-sized work units, both of which would dominate the
- costs measured by the benchmark in any realistic application.</FONT></P>
- </OL>
- <P ALIGN=LEFT STYLE="margin-left: 0.25in"><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- 20.7.18 [func.referenceclosure].</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- 5.1.1 paragraph 12.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 74</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">20.8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Scoped
- allocators represent a poor trade-off for standardization, since
- (1) scoped-allocator--aware containers can be implemented outside
- the C++ standard library but used with its algorithms, (2) scoped
- allocators only benefit a tiny proportion of the C++ community
- (since few C++ programmers even use today&rsquo;s allocators), and
- (3) all C++ users, especially the vast majority of the C++
- community that won&rsquo;t ever use scoped allocators are forced
- to cope with the interface complexity introduced by scoped
- allocators. In essence, the larger community will suffer to
- support a very small subset of the community who can already
- implement their own data structures outside of the standard
- library. Therefore, scoped allocators should be removed from the
- working paper.</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Some
- evidence of the complexity introduced by scoped allocators:</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">20.3.3,
- 20.5: large increase in the number of pair and tuple constructors</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">23:
- confusing &ldquo;AllocatableElement&rdquo; requirements
- throughout.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- support for scoped allocators from the working paper. This
- includes at least the following changes:</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- 20.8.3 [allocator.element.concepts]</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- 20.8.7 [allocator.adaptor]</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- 20.8.10 [construct.element]</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">In
- Clause 23: replace requirements naming the AllocatableElement
- concept with requirements naming CopyConstructible,
- MoveConstructible, DefaultConstructible, or Constructible, as
- appropriate.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 74</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.8.2.2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">(a)
- synopsis (b) after &para; 14</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te/ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">A
- concept name is twice misspelled.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &ldquo;Hasconstructor&rdquo; to &ldquo;HasConstructor&rdquo;
- (twice).</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 75</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.8.2.2</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Allocator
- concepts are incomplete</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">See
- paper:
- http://www.halpernwightsoftware.com/WG21/n2810_allocator_defects.pdf></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 43</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.8.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;alloc&quot; should be
- &quot;Alloc&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">auto concept
- UsesAllocator&lt;typename T, typename Alloc&gt; {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">requires Allocator&lt;alloc&gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typename allocator_type =
- T::allocator_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">auto concept
- UsesAllocator&lt;typename T, typename Alloc&gt; {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">requires
- Allocator&lt;<U>Alloc</U>&gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typename allocator_type =
- T::allocator_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 215</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20.8.3.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6,8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Extra
- pair of {}, presumably some formatting code gone awry : duration&amp;
- operator-{-}();</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the {} or fix formatting</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 77</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">20.8.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Allocator-specific
- move and copy behavior for containers (N2525) complicates a
- little-used and already-complicated portion of the standard
- library (allocators), and breaks the conceptual model of
- move-constructor and move-assignment operations on standard
- containers being efficient operations. The extensions for
- allocator-specific move and copy behavior should be removed from
- the working paper.</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">With
- the introduction of rvalue references, we are teaching programmers
- that moving from a standard container (e.g., a vector&lt;string&gt;)
- is an efficient, constant-time operation. The introduction of
- N2525 removed that guarantee; depending on the behavior of four
- different traits (20.8.4), the complexity of copy and move
- operations can be constant or linear time. This level of
- customization greatly increases the complexity of standard
- containers, and benefits only a tiny fraction of the C++
- community.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- 20.8.4.</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- 20.8.5.</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Remove
- all references to the facilities in 20.8.4 and 20.8.5 from clause
- 23.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 78</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.8.12,
- 20.8.13.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">There
- is presently no way to convert directly from a </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">shared_ptr</FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt">
- to a </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">unique_ptr</FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt">.</FONT></FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- an interface that performs the conversion. See the attached,
- Issues with the C++ Standard&quot; paper under Chapter 20,
- &quot;Conversion from </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">shared_ptr</FONT></CODE><FONT SIZE=2 STYLE="font-size: 9pt">
- to </FONT><CODE>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">unique_ptr&quot;.</FONT></CODE></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 79</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.8.12.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">[unique.ptr.single.ctor]/5 no
- longer requires for D not to be a pointer type. &nbsp;This
- restriction needs to be put back in. &nbsp;Otherwise we have a run
- time failure that could have been caught at compile time:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">unique_ptr&lt;int,
- void(*)(void*)&gt; p(malloc(sizeof(int))); &nbsp;// should not
- compile</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">unique_ptr&lt;int,
- void(*)(void*)&gt; p(malloc(sizeof(int)), free); &nbsp;// ok</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 44</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.8.13.6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The 1st parameter p and 2nd
- parameter v is now shared_ptr&lt;T&gt; *.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">It should be shared_ptr&lt;T&gt;&amp;,
- or if these are shared_ptr&lt;T&gt;* then add the &quot;p shall
- not be a null pointer&quot; at the requires.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Change shared_ptr&lt;T&gt;&amp;
- or add the &quot;p shall not be a null pionter&quot; at the
- requires.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 45</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.9</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Rep, Period, Clock and
- Duration don't correspond to concept.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class Rep, class
- Period = ratio&lt;1&gt;&gt; class duration;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class Clock,
- class Duration = typename Clock::duration&gt; class time_point;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Make concept for Rep, Period,
- Clock and Duration, and fix 20.9 and wait_until and wait_for's
- template parameter at 30.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 80</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.9.2.1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Heading</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- section heading does not describe the contents.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Change
- the heading &ldquo;<SPAN LANG="en-US">is_floating_point</SPAN>&rdquo;
- to &ldquo;<SPAN LANG="en-US">treat_as_floating_point</SPAN>&rdquo;.
- Optionally adjust the section&rsquo;s label similarly.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">US
- 81</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">20.9.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT>
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">chrono::duration is missing
- the modulous operator for both member and non-member arithmetic.
- This operator is useful for finding the position of a duration
- within a bounded time frame. Having it be built in to duration is
- safer than requiring the client to extract and operate directly on
- the duration&rsquo;s representation as the latter will not enforce
- the correct units of the operation.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Ex:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">milliseconds ms(...);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">microseconds us(...);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">ms % us; // microseconds</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">us % ms; // microseconds</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">ms % 5; // milliseconds</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">5 % ms; // does not compile</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Add:</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class Rep, class
- Period = ratio&lt;1&gt;&gt; </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class duration { </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public: </FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">...</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">duration&amp;
- operator%(const rep&amp;);</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">duration&amp;
- operator%(const duration&amp;);</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">..</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">};</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template
- &lt;class Rep1, class Period,</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">class
- Rep2&gt; </FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">duration&lt;typename
- common_type&lt;</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Rep1,
- Rep2&gt;::type, Period&gt; </FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">operator%(const
- duration&lt;Rep1, Period&gt;&amp; d, const Rep2&amp; s); </FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">template
- &lt;class Rep1, class Period1,</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">class
- Rep2, class Period2&gt; </FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">typename
- common_type&lt;duration&lt;Rep1, Period1&gt;, duration&lt;Rep2,
- Period2&gt;&gt;::type </FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">operator%(const
- duration&lt;Rep1, Period1&gt;&amp; lhs, const duration&lt;Rep2,
- Period2&gt;&amp; rhs); </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 82</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">20.9.5.3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">after
- &para; 1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The
- code synopsis has a minor alignment error.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Align
- &ldquo;rep&rdquo; with the other symbols defined in this synopsis.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 216</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">21</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">All
- the containers use concepts for their iterator usage, exect for
- basic_string. This needs fixing.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Use
- concepts for iterator template parameters throughout the chapter.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 46</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">21.2,
- 21.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The basic_string does not use
- concept.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The &quot;class Alloc&quot; is
- changed to &quot;Allocator Alloc&quot;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The &quot;class
- InputIterator&quot; is changed to &quot;InputIterator Iter&quot;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 21.3, basic_string:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class charT, class
- traits = char_traits&lt;charT&gt;,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>Allocator</U>
- Alloc = allocator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class basic_string;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(const charT*
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(const charT*
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(charT
- lhs, const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(charT
- lhs, basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const charT*
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const charT*
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs, charT rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator+(basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;&amp;
- lhs, charT rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator==(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator==(const charT*
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator==(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const charT*
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator!=(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator!=(const charT*
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator!=(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const charT*
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator&lt; (const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator&lt; (const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const charT*
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator&lt; (const
- charT* lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator&gt; (const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator&gt; (const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const charT*
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator&gt; (const
- charT* lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator&lt;=(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator&lt;=(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const charT*
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator&lt;=(const
- charT* lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator&gt;=(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool
- operator&gt;=(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const charT*
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">bool operator&gt;=(const
- charT* lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 21.3.8.8: swap</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_string&lt;charT,traits,Alloc&gt;&amp; lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,Alloc&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_string&lt;charT,traits,Alloc&gt;&amp;&amp; lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,Alloc&gt;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_string&lt;charT,traits,Alloc&gt;&amp; lhs,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,Alloc&gt;&amp;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 21.3.8.9: inserters and
- extractors</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_istream&lt;charT,traits&gt;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp;&amp;
- is,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_ostream&lt;charT,
- traits&gt;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">operator&lt;&lt;(basic_ostream&lt;charT,
- traits&gt;&amp;&amp; os,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_istream&lt;charT,traits&gt;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">getline(basic_istream&lt;charT,traits&gt;&amp;&amp;
- is,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- str,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">charT delim);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, class traits, <U>Allocator</U> <U>Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_istream&lt;charT,traits&gt;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">getline(basic_istream&lt;charT,traits&gt;&amp;&amp;
- is,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 21.3 Class template
- basic_string</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class charT,
- class traits = char_traits&lt;charT&gt;,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>Allocator
- Alloc</U> =
- allocator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class basic_string {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// types:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef traits traits_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- traits::char_type value_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef <U>Alloc</U>
- allocator_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- typename <U>Alloc</U>::size_type
- size_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- typename <U>Alloc</U>::difference_type
- difference_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- typename <U>Alloc</U>::reference
- reference;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- typename <U>Alloc</U>::const_reference
- const_reference;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- typename <U>Alloc</U>::pointer
- pointer;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- typename <U>Alloc</U>::const_pointer
- const_pointer;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- implementation-defined iterator; // See 23.1</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- implementation-defined const_iterator; // See 23.1</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- std::reverse_iterator&lt;iterator&gt; reverse_iterator;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- std::reverse_iterator&lt;const_iterator&gt;
- const_reverse_iterator;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">static const size_type npos
- = -1;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 21.3.2
- construct/copy/destroy:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- basic_string(const <U>Alloc</U>&amp;
- a = <U>Alloc</U>());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string(const
- basic_string&amp; str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string(basic_string&amp;&amp;
- str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string(const
- basic_string&amp; str, size_type pos, size_type n = npos,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const <U>Alloc</U>&amp;
- a = <U>Alloc</U>());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string(const charT* s,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">size_type
- n, const <U>Alloc</U>&amp;
- a = <U>Alloc</U>());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string(const
- charT* s, const <U>Alloc</U>&amp;
- a = <U>Alloc</U>());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string(size_type
- n, charT c, const <U>Alloc</U>&amp;
- a = <U>Alloc</U>());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;<U>InputIterator</U> <U>Iter</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string(<U>Iter</U>
- begin, <U>Iter</U>
- end,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const <U>Alloc</U>&amp;
- a = <U>Alloc</U>());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string(initializer_list&lt;charT&gt;,
- const <U>Alloc</U>&amp;
- = <U>Alloc</U>());</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string(const
- basic_string&amp;, const <U>Alloc</U>&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string(basic_string&amp;&amp;,
- const <U>Alloc</U>&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">~basic_string();</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- operator=(const basic_string&amp; str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- operator=(basic_string&amp;&amp; str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- operator=(const charT* s);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- operator=(charT c);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- operator=(initializer_list&lt;charT&gt;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 21.3.3 iterators:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 21.3.4 capacity:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 21.3.5 element access:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 21.3.6 modifiers:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- append(const basic_string&amp; str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- append(const basic_string&amp; str, size_type pos,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">size_type
- n);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- append(const charT* s, size_type n);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- append(const charT* s);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- append(size_type n, charT c);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;<U>InputIterator</U> <U>Iter</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- append(<U>Iter</U>
- first, <U>Iter</U>
- last);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- append(initializer_list&lt;charT&gt;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void push_back(charT c);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- assign(const basic_string&amp; str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- assign(basic_string&amp;&amp; str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- assign(const basic_string&amp; str, size_type pos,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">size_type
- n);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- assign(const charT* s, size_type n);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- assign(const charT* s);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- assign(size_type n, charT c);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;<U>InputIterator</U> <U>Iter</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- assign(<U>Iter</U>
- first, <U>Iter</U>
- last);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- assign(initializer_list&lt;charT&gt;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- insert(size_type pos1, const basic_string&amp; str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- insert(size_type pos1, const basic_string&amp; str,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">size_type
- pos2, size_type n);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- insert(size_type pos, const charT* s, size_type n);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- insert(size_type pos, const charT* s);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- insert(size_type pos, size_type n, charT c);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">iterator
- insert(const_iterator p, charT c);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void insert(const_iterator
- p, size_type n, charT c);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;<U>InputIterator</U> <U>Iter</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- insert(const_iterator p, <U>Iter</U>
- first, <U>Iter</U>
- last);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void insert(const_iterator
- p, initializer_list&lt;charT&gt;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(size_type pos1, size_type n1,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&amp; str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(size_type pos1, size_type n1,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&amp; str,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">size_type
- pos2, size_type n2);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(size_type pos, size_type n1, const charT* s,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">size_type
- n2);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(size_type pos, size_type n1, const charT* s);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(size_type pos, size_type n1, size_type n2,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">charT
- c);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(iterator i1, iterator i2,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&amp; str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(iterator i1, iterator i2, const charT* s,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">size_type
- n);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(iterator i1, iterator i2, const charT* s);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(iterator i1, iterator i2,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">size_type
- n, charT c);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;<U>InputIterator</U> <U>Iter</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(iterator i1, iterator i2,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>Iter</U>
- j1, <U>Iter</U>
- j2);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&amp;
- replace(iterator, iterator, initializer_list&lt;charT&gt;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 21.3.7 string operations:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator</U> <U>Alloc&gt;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">struct
- constructible_with_allocator_suffix&lt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,
- traits, <U>Alloc</U>&gt;
- &gt; : true_type { };</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 47</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">21.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo. Missing &rdquo;&gt;&rdquo;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,
- class traits, Allocator Alloc</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,
- class traits, Allocator Alloc&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct typo.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 48</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">21.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">char_traits does not use
- concept.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">For example, create CharTraits
- concept and change as follows:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- charT, <U>CharTraits</U>
- traits = char_traits&lt;charT&gt;,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class Allocator =
- allocator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class basic_string {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add a concept for char_traits.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 217</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">21.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">basic_string
- refers to constructible_with_allocator_suffix, which I thought was
- removed?</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the lines: template &lt;class charT, class traits, class Alloc
- struct constructible_with_allocator_suffix&lt; basic_string&lt;charT,
- traits, Alloc&gt; &gt; : true_type { };</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 218</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">21.3.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- identity &quot;&amp;*(s.begin() + n) == &amp;*s.begin() + n&quot;
- relies on operator&amp; doing the &quot;right thing&quot;, which
- (AFAICS) there is no requirement for. See my comment under clauses
- &quot;23.2.1, 23.2.6&quot; (p1 in both cases) - this is the same
- issue, but I've created a separate comment for basic_string
- because it is in a different chapter.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">See
- my recommendations for &quot;23.2.1, 23.2.6&quot;.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 219</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">21.3.6.6
- [string.replace]</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Effects
- refers to &quot;whose first begin() - i1 elements&quot; However i1
- is greater than begin()...</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Effects
- refers to &quot;whose first i1 - begin() elements&quot; </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 220</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">21.3.8.9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- operator&lt;&lt; for basic_string takes the output stream by
- r-value reference. This is different from the same operator for
- error_code (19.4.2.6), bitset (20.2.6.3), shared_ptr
- (20.7.13.2.8), complex (26.3.6) and sub_match (28.4)</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Use
- the same reference type for the all the library types. This should
- be the r-value reference. There are other places in the standard
- where TR1, and new classes, did not receive an 'R-value' update. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 33</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">22.1.1
- [locale]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ios_base::iostate
- err = 0;</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">iostate
- is a bitmask type and so could be an enumeration. Probably using</FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">goodbit
- is the solution.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 49</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">22.1.3.2.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">codecvt
- does not use concept. For example, create
- CodeConvert concept and change as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;<U>CodeConvert</U>
- Codecvt, class Elem = wchar_t&gt; class wstring_convert {</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add a concept for codecvt.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 50</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">22.1.3.2.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add custom allocator parameter
- to wstring_convert, since we cannot allocate memory for strings
- from a custom allocator.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class Codecvt,
- class Elem = wchar_t&gt; class wstring_convert {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- std::basic_string&lt;char&gt; byte_string;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- std::basic_string&lt;Elem&gt; wide_string;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.06in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class
- Codecvt, class Elem = wchar_t<U>,</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>Allocator
- WideAllocator = allocator&lt;Elem&gt;,</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>Allocator
- ByteAllocator = allocator&lt;char&gt;</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class wstring_convert {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- std::basic_string&lt;char, <U>char_traits&lt;char&gt;,
- ByteAllocator</U>&gt;
- byte_string;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- std::basic_string&lt;Elem, <U>char_traits&lt;Elem&gt;,
- WideAllocator</U>&gt;
- wide_string;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FI
- 4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">22.2.1.4.1</FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">22.2.1.4.2</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt"><TT><FONT FACE="Arial, sans-serif">to_end
- and to_limit are both used. Only one is needed.</FONT></TT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Change
- to_limit to to_end.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FI
- 5</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt"><TT><FONT FACE="Arial, sans-serif">22.2.1.4.2
- </FONT></TT></FONT>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">#3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt"><TT><FONT FACE="Arial, sans-serif">[
- Note: As a result of operations on state, it can return ok or
- partial and set next == from and to_next != to. &mdash;end note ]</FONT></TT><BR></FONT><BR><BR>
- </P>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt"><TT><FONT FACE="Arial, sans-serif">&quot;next&quot;
- should be &quot;from_next.&quot;</FONT></TT></FONT></P>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt"><TT><FONT FACE="Arial, sans-serif">Also,
- the sentence applies to all the examples, including do_in and
- do_out.</FONT></TT></FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt"><TT><FONT FACE="Arial, sans-serif">Reasoning:
- When reading one element of multibyte source data such as UTF-8,
- it is possible that from_next is incremented, to_next is
- unaltered, state is altered and return value is partial.<BR>When
- reading one element of wide character data, the output can be
- several multibyte characters, so it is possible that from_next is
- unaltered, to_next is advanced, state is altered and return value
- is partial.</FONT></TT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt"><TT><FONT FACE="Arial, sans-serif">[
- Note: As a result of operations on state, do_in and do_out can
- return</FONT></TT><BR><TT><FONT FACE="Arial, sans-serif">ok or
- partial and set from_next == from and/or to_next != to. &mdash;end</FONT></TT><BR><TT><FONT FACE="Arial, sans-serif">note
- ]</FONT></TT></FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FI
- 6</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">22.2.1.5</FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">See
- also 22.2.1.4 (1,2,3)</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt"><TT><FONT FACE="Arial, sans-serif">codecvt_byname
- is only specified to work with locale names. There is no built-in
- means to find a codecvt with a character set's name. A locale and
- a character set are not the same. If the user has data which is
- encoded in a certain character set and she wants to create a
- codecvt which can convert from that character set to another one,
- she must iterate through locales to find one, or use external
- means (iconv, ICU's uconv). Specifying a locale with the character
- set is not a suitable solution, since there is no built-in mapping
- from character sets to locales. It is only possible to inquire the
- character set once the locale is known.</FONT></TT></FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt"><TT><FONT FACE="Arial, sans-serif">There
- should be a built-in means to find a codecvt with a pair of
- character set names. </FONT></TT></FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FI
- 7</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">22.2.1.4</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1,2,3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- word &quot;codeset&quot; is used, whereas the word &quot;character
- set&quot; is used elsewhere in the text. The words are intended to
- convey the same concept, so only one should be used (or always
- both together).</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Change
- &quot;codeset&quot; to &quot;character set.&quot;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 51</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">22.2.5.1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">A parameter `end&rsquo; should
- be `fmtend&rsquo;.<BR>get() function had two `end&rsquo;
- parameters at N2321.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">iter_type get (iter_type s,
- iter_type end, ios_base&amp; f, ios_base::iostate&amp; err, tm* t,
- const char_type* fmt, const char_type *end) const;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The function prototype of
- get() has been corrected at N2800, but a Requires statement still
- refers `end&rsquo; parameter.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Requires: [fmt,end) shall be
- a valid range.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <BR><BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Requires: [fmt,fmtend) shall
- be a valid range.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 52</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">22.2.5.1,
- 22.2.5.2, 22.2.6.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">InputIterator does not use
- concept.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">22.2.5.1</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,
- class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class time_get : public
- locale::facet, public time_base {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef charT
- char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef InputIterator
- iter_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, <U>InputIterator
- InputIter</U> =
- istreambuf_iterator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class time_get : public
- locale::facet, public time_base {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef charT
- char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef <U>InputIter</U>
- iter_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">22.2.5.2</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,
- class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class time_get_byname : public
- time_get&lt;charT, InputIterator&gt; {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef time_base::dateorder
- dateorder;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef InputIterator
- iter_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, <U>InputIterator
- InputIter</U> =
- istreambuf_iterator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class time_get_byname : public
- time_get&lt;charT, InputIter&gt; {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef time_base::dateorder
- dateorder;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef <U>InputIter</U>
- iter_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">22.2.6.1</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class InputIterator
- = istreambuf_iterator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class money_get : public
- locale::facet {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef charT
- char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef InputIterator
- iter_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>InputIterator
- InputIter</U> =
- istreambuf_iterator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class money_get : public
- locale::facet {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef charT
- char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef <U>InputIter</U>
- iter_type;
- </FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 53</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">22.2.5.3
- , 22.2.5.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">OutputIterator does not use
- concept.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">22.2.5.3</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,
- class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class
- time_put : public locale::facet {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef charT
- char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef OutputIterator
- iter_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="zxx">&#12288;</SPAN></FONT><FONT SIZE=2 STYLE="font-size: 9pt">should
- be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, <U>OutputIterator
- OutputIter</U> =
- ostreambuf_iterator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class time_put : public
- locale::facet {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef
- charT char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef <U>OutputIter</U>
- iter_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">22.2.5.4</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,
- class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class time_put_byname : public
- time_put&lt;charT, OutputIterator&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef charT
- char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef OutputIterator
- iter_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, <U>OutputIterator
- OutputIter</U> =
- ostreambuf_iterator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class time_put_byname : public
- time_put&lt;charT, OutputIter&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef charT
- char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT> <FONT SIZE=2 STYLE="font-size: 9pt">typedef <U>OutputIter</U>
- iter_type;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 54</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">23</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">nd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, Table 79</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There is not &lt;forward_list&gt;
- in Table 79.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add &lt;forward_list&gt;
- between &lt;deque&gt; and &lt;list&gt;.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 221</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 79</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- table is missing the new &lt;forward_list&gt; header.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- &lt;forward_list&gt; to the table for sequence containers.
- Alternative (technical) solution might be to merge &lt;forward_list&gt;
- into &lt;list&gt;.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 222</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is not clear what purpose the Requirement tables serve in the
- Containers clause. Are they the definition of a library Container?
- Or simply a conventient shorthand to factor common semantics into
- a single place, simplifying the description of each subsequent
- container? This becomes an issue for 'containers' like array,
- which does not meet the default-construct-to-empty requirement, or
- forward_list which does not support the size operation. Are these
- components no longer containers? Does that mean the remaining
- requirements don't apply? Or are these contradictions that need
- fixing, despite being a clear design decision?</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- all the tables in 23.1 are there as a convenience for
- documentation, rather than a strict set of requirements.
- Containers should be allowed to relax specific requirements if
- they call attention to them in their documentation. The
- introductory text for array should be expanded to mention a
- default constructed array is not empty, and forward_list
- introduction should mention it does not provide the required size
- operation as it cannot be implemented efficiently.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 55</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">23.1.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">rd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 4</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">It seems that &ldquo;the
- MinimalAllocator concep&rdquo; is the typo of &ldquo;the
- MinimalAllocator concept&rdquo;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">Change
- to &hellip; models the MinimalAllocator concep</FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#339966">t</FONT><FONT SIZE=2 STYLE="font-size: 9pt">.</FONT></FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 223</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- library does not define the MinimalAllocator or ScopedAllocator
- concepts, these were part of an earlier Allocators proposal that
- was rejected.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the references to MinimalAllocator and ScopedAllocator, or add
- definitions for these concepts to clause 20.7.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 224</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- paragraph implicitly requires all containers in clause 23 to
- support allocators, which std::array does not.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- an 'unless otherwise specified' rider somewhere in p8, or move the
- whole array container from clause 23 [containers] to clause 20
- [utilies] to accompany bitset, pair and tuple.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 225</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 81</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Inconsistent
- words used to say the same thing. Table 80 describes
- iterator/const_iterator typedef as returning an &quot;iterator
- type whose value type is T&quot;. Table 81 expresses the same idea
- as an &quot;iterator type pointing to T&quot;. Express identical
- ideas with the same words to avoid accidentally introducing
- subtlety and confusion</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- return types for X::(const)_reverse_iterator to say &quot;iterator
- type whose value type is (const) T&quot;. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 226</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">10</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;array&gt;
- must be added to this list. In particular it doesn't satisfy: - no
- swap() function invalidates any references, pointers, or iterators
- referring to the elements of the containers being swapped. and
- probably doesn't satisfy: &mdash; no swap() function throws an
- exception.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">If
- &lt;array&gt; remains a container, this will have to also
- reference array, which will then have to say which of these points
- it satisfies.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 227</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 80</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- post-condition for a = rv uses the word &ldquo;construction&rdquo;
- when it means &ldquo;assignment&rdquo;</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- the word &ldquo;construction&rdquo; with the word &ldquo;assignment&rdquo;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 228</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Line
- 4 contains a spelling mistake in the fragment &quot;MinimalAllocator
- concep.&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;concep&quot; with &quot;concept&quot;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 229</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- fragment &quot;A container may directly call constructors&quot; is
- not technically correct as constructors are not callable.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;A container may directly call constructors and destructors
- for its stored objects&quot; with something similar to &quot;A
- container may directly construct its stored objects and call
- destructors for its stored objects&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 230</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in">&ldquo;<FONT SIZE=2 STYLE="font-size: 9pt">implementations
- shall consider the following functions to be const&rdquo; - what
- does this mean? I don't understand what it means by
- implementations considering the functions to be const &ndash;
- surely they are either declared const or not?</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clarify
- what is meant and what requirements an implementation must
- satisfy.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 56</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">23.1.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">12</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, Table 84</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">`array&rsquo; is unstated in
- Table 84 - Optional sequence container operations.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add `array&rsquo; to Container
- field for the following Expression.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.15in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">a.front()</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.15in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">a.back()</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.15in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">a[n]</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.15in; margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">a.at(n)</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 231</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">9-11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">These
- paragraphs are redundant now that Concepts define what it means to
- be an Iterator and guide overload resolution accordingly.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- 23.1.3p9-11. Make sure std::basic_string has constraints similar
- to std::vector to meet this old guarantee.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 232</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 84</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">match_results
- may follow the requirements but is not listed a general purpose
- library container.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- reference to match_results against a[n] operation</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 233</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 84</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- references to the new containers.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- reference to array to the rows for: a.front(), a. back(), a[n]
- a.at(n). Add reference to forward_list to the rows for: a.front(),
- a.emplace_front(args), a.push_front(t), a.push_front(rv),
- a.pop_front(). Add reference to basic_string to the row for:
- a.at(n). </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 234</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 84</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Ther
- reference to iterator in semantics for back should also allow for
- const_iterator when called on a const-qualified container. This
- would be ugly to specify in the 03 standard, but is quite easy
- with the addition of auto in this new standard.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- iterator with auto in semantics for back: { auto tmp = a.end();
- --tmp; return *tmp; }</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 235</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT>&ldquo;<FONT SIZE=2 STYLE="font-size: 9pt">The
- library provides three basic kinds of sequence containers: vector,
- list, and deque&rdquo; - text appears to be out of date re
- addition of array and forward_list</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Change
- the text to read: &ldquo;The library provides five basic kinds of
- sequence containers: array, deque, forward_list, list and vector&rdquo;.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 236</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">[
- I've moved (1) into a separate comment because I believe it is
- editorial in the simple sense, whereas (2) and (3) are not so
- straight forward ] (2) &ldquo;vector is the type of sequence
- container that should be used by default&rdquo; -- As I understand
- it vector was considered first port of call because the things it
- has in common with the native array make programmers (especially
- those new to the container library) feel like they are on familiar
- territory. However, we now have the array container, so I think
- this should be recommended as the first port of call. (3) This
- paragraph is actually giving guidance on the use of the containers
- and should not be normative text</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- this paragraph</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 237</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">vector,
- list, and deque offer the programmer different complexity
- trade-offs and should be used accordingly - this ignores array and
- forward_list</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Modify
- the text to read: &quot;array, deque, forward_list, list and
- vector offer the programmer different complexity trade-offs and
- should be used accordingly&quot;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 238</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Leaving
- it unspecified whether or not iterator and const_iterator are the
- same type is dangerous, as user code may or may not violate the
- One Definition Rule by providing overloads for both types. It is
- probably too late to specify a single behaviour, but implementors
- should document what to expect. Observing that problems can be
- avoided by users restricting themselves to using const_iterator,
- add a note to that effect.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- 'unspecified' to 'implementation defined'. Add &quot;[Note: As
- itererator and const_iterator have identical semantics in this
- case, and iterator is convertible to const_iterator, users can
- avoid violating the One Definition Rule by always using
- const_iterator in their function parameter lists -- end note]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 239</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">85</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">It
- is not possible to take a move-only key out of an unordered
- container, such as (multi)set or (multi)map, or the new hashed
- containers.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- below a.erase(q), a.extract(q), with the following notation:
- a.extract(q), Return type pair&lt;key, iterator&gt; Extracts the
- element pointed to by q and erases it from the set. Returns a pair
- containing the value pointed to by q and an iterator pointing to
- the element immediately following q prior to the element being
- erased. If no such element exists,returns a.end().</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 240</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.1.6.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- axiom EmplacePushEquivalence should be asserting the stronger
- contract that emplace and insert return the same iterator value,
- not just iterators that dereference to the same value. This is a
- similar statement that is easier to express and should be
- equivalent - the idea that insert and emplace might return
- iterator values that do not compare equal but point to the same
- element should fail somewhere in the iterator concepts. Also, this
- axiom should be renamed to reflect its connection with insert,
- rather than push_front/push_back,</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the * to deference the returned iterator either side of the == in
- the EmplacePushEquivalence axiom, rename the axiom
- EmplacementInsertionEquivalence : requires InsertionContainer&lt;C&gt;
- &amp;&amp; Constructible&lt;value_type, Args...&gt; axiom
- EmplacementInsertionEquivalence(C c, const_iterator position,
- Args... args) { emplace(c, position, args...) == insert(c,
- position, value_type(args...)); }</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 57</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">23.1.6.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 4</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo, duplicated &quot;to&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;<U>to
- to</U> model insertion
- container concepts.&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Remove one.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 241</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">std::array
- does not have an allocator, so need to document an exception to
- the requirements of 23.1.1p3</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">add
- exception to 23.1.1p3</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 242</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">std::
- qualification no longer needed for reverse_iterator.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">remove
- std:: qualification from std::reverse_iterator&lt;iterator&gt; and
- std::reverse_iterator&lt;const_iterator&gt;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 243</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Most
- containers, and types in general have 3 swaps: swap(T&amp;, T&amp;)
- swap(T&amp;&amp;, T&amp;) swap(T&amp;, T&amp;&amp;) But array only
- has swap(T&amp;, T&amp;).</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">add
- the other two swaps.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 244</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.2.1,
- 23.2.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- validity of the expression &amp;a[n] == &amp;a[0] + n is
- contingent on operator&amp; doing the &ldquo;right thing&rdquo;
- (as captured by the CopyConstructible requirements in table 30 in
- C++2003). However this constraint has been lost in the Concepts of
- C++0x. This applies to vector and array (it actually applies to
- string also, but that's a different chapter, so I'll file a
- separate comment there and cross-reference).</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Define
- a ContiguousStrorage and apply it to vector,array and string. The
- Concept (supplied by Alisdair M) looks like this: Concept&lt;
- typename C &gt; ContiguousStrorage { requires Container&lt;C&gt;;
- typename value_type = C::value_type; value_type * data( C ); axiom
- Contiguous { C c; true = equal_ranges( data( c), data(c) +
- size(c), begin(c)); } };</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 245</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.2.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- predicate types used in special member function of forward_list
- should be CopyConstructible, as per the algorithms of the same
- name. Note: an alternate solution would be to require these
- callable concepts to be CopyConstructible in clause 20, which
- would simplify the library specification in general. See earlier
- comment for details, that would render this one redundant.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- CopyConstructible requirement to the following signatures:
- template &lt;Predicate&lt;auto, T&gt; Pred&gt; requires
- CopyConstructible&lt;Pred&gt; void remove_if(Pred pred); template
- &lt;EquivalenceRelation&lt;auto, T&gt; BinaryPredicate&gt;
- requires CopyConstructible&lt;BinaryPredicate&gt; void
- unique(BinaryPredicate binary_pred); template
- &lt;StrictWeakOrder&lt;auto, T&gt; Compare&gt; requires
- CopyConstructible&lt;Compare&gt; void
- merge(forward_list&lt;T,Alloc&gt;&amp;&amp; x, Compare comp);
- template &lt;StrictWeakOrder&lt;auto, T&gt; Compare&gt; requires
- CopyConstructible&lt;Compare&gt; void sort(Compare comp); </FONT>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 58</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">23.2.3.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line before 1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph </FONT></FONT>
- </P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Unnecessary &quot;{&quot;
- exists before a word iterator like &quot;{iterator
- before_begin()&quot;.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Remove &quot;{&quot;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 59</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">23.2.4.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Types of the third and forth
- parameter of splice() are iterator at 23.2.4.4, though types of
- them are const_iterator at 23.2.4. (They are both const_iterator
- on N2350)</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void splice(const_iterator
- position, list&lt;T,Allocator&gt;&amp;&amp; x, iterator i);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void splice(const_iterator
- position, list&lt;T,Allocator&gt;&amp;&amp; x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">iterator first,
- iterator last);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void splice(const_iterator
- position, list&lt;T,Allocator&gt;&amp;&amp; x, const_iterator i);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void splice(const_iterator
- position, list&lt;T,Allocator&gt;&amp;&amp; x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const_iterator
- first, const_iterator last);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 83</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">23.2.6.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT> <FONT SIZE=2 STYLE="font-size: 9pt">7</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;shrink_to_fint&quot;
- should be &quot;shrink_to_fit&quot;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 246</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">23.3.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- content of this sub-clause is purely trying to describe in words
- the effect of the requires clauses on these operations, now that
- we have Concepts. As such, the desctiption is more confusing than
- the signature itself. The semantic for these functions is
- adequately covered in the requirements tables in 23.1.4.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- 23.3.2.2 entirely. (but do NOT strike these signatures from the
- class template definition!)</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 247</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Iterator
- concepts are not extensive enough to merit a whole new header, and
- should be merged into &lt;concpts&gt;. This is particularly
- important for supporting the new for loop syntax which requires
- access to the Range concept. The required header to enable this
- syntax shoud have a simple name, like &lt;concepts&gt;, rather
- than something awkward to type like &lt;iterator_concepts&gt;.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the concepts of &lt;iterator_concepts&gt; into the &lt;concepts&gt;
- header. We take no position on moving the text from Clause 24 to
- Clause 20 though. </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 248</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- text &quot;so for any iterator type there is an iterator value
- that points past the last element of a corresponding container&quot;
- is slightly misleading. Iterators can refer into generalised
- ranges and sequences, not just containers. A broader term than
- 'container' should be used.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- the reference to container with a more appropriate concept </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 250</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">A
- default implementation should be supplied for the post-increment
- operator to simplify implementation of iterators by users.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Copy
- the Effects clause into the concept description as the default
- implementation. Assumes a default value for postincrement_result </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 251</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- post-increment operator is dangerous for a general InputIterator.
- The multi-pass guarantees that make it meaningful are defined as
- part of the ForwardIterator refinement. Any change will affect
- only constrained templates that have not yet been written, so
- should not break existing user iterators which remain free to add
- these operations. This change will also affect the generalised
- OutputIterator, although there is no percieved need for the
- post-increment operator in this case either.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- declaration of postincrement operator and postincrement_result
- type from Interator concept to the ForwardIterator concept</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK<BR> 252</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">istream_iterator
- is not a class, but a class template</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- 'class' to 'class template' in the note. </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 253</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">First
- sentance does not make gramatical sense, Seems to be missing the
- words 'if it' by comparison with similar sentance in other
- subsections</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the words 'if it' : &quot;X satisfies the requirements of an
- output iterator IF IT meets the syntactic and semantic
- requirements&quot; </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 254</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- postcondition for pre-increment operator should be written as an
- axiom</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the postcondition into the concept definition as an axiom </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 255</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- postcondition for pre-increment operator should be written as an
- axiom</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the postcondition into the concept definition as an axiom </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 256</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3,
- 4, 5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- relationship between pre- and post- decrement should be expressed
- as an axiom.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the text specification of pre/post-conditions and behaviour into
- an axiom within the BidirectionalIterator concept </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 257</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">There
- is a reasonable default for postdecrement_result type, which is X.
- X is required to be regular, therefore CopyConstructible and a
- valid ResultType. Together with the next comment this simplifies
- user defined iterator implentations</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the default : typename postincrement_result = X; </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 258</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">A
- default implementation should be supplied for the post-decrement
- operator to simplify implementation of iterators by users.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Copy
- the Effects clause into the concept description as the default
- implementation. Assumes a default value for postincrement_result </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 259</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">postdecrement_result
- is effectively returning a copy of the original iterator value, so
- should have similar constraints, rather than just HasDereference.
- If Concepts do not support this circularity of definition suggest
- that concepts feature may want a little more work</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the requirement: requires Iterator&lt; postdecrement_result &gt;; </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 260</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- effects clause for post-decrement iterator should be available as
- an axiom and a default implementation, where the compiler can make
- better use of it.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the Effects clause into the BidirectionalIterator concept
- definition as an axiom, and as the default implementation for the
- operation.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 249</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt"><SPAN LANG="en-US">24.1.6</SPAN></FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- semantic for operator+= should also be provided as a default
- implementation to simplify implementation of user-defined
- iterators</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Copy
- the text from the effects clause into the RandomAccessIterator
- concept as the default implementaiton.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 261</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">To
- simplify user defined random access iterator types, the
- subscript_reference type should default to reference</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">typename
- subscript_reference = reference; </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 262</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3,
- 4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Effects
- and post-conditions for operator+ are more useful if expressed as
- axioms, and supplied as default implementations.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the effects and Postcondition definitions into the
- RandomAccessIterator concept and copy the code in the
- specification as the default implementation of these operations.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 263</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- requirement on operator-= would be better expressed as a default
- implementation in the concept, with a matching axiom</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the specification for operator-= from the returns clause into an
- axiom and default implementation within the RandomAccessIterator
- concept</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 264</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Effects
- clauses are better expressed as axioms where possible.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Move
- code in operator- effects clause into RandomAccessIterator concept
- as both a default implementation and an axiom</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 265</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- effects clause is nonesense. It looks more like an axiom stating
- equivalence, and certainly an effects clause cannot change the
- state of two arguments passed by const reference</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- the Effects clause</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 266</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">9</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- sentance should be provided as a default definition, along with a
- matching axiom</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Move
- the Returns clause into the spefication for RandomAccessIterator
- operator- as a default implementation. Move the Effects clause as
- the matching axiom.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 267</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- code in the Requires clause for RandomAccessIterator operator[]
- would be better expressed as an axiom.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Rewrite
- the Requires clause as an axiom in the RandomAccessIterator
- concept</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 268</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.1.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">This
- note is potentialy confusing as __far enters the syntax as a clear
- language extension, but the note treats it as a regular part of
- the grammar. It might be better expressed using attributes in the
- current wording.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Clean
- up the note to either avoid using language extension, or spell out
- this is a constraint to support extensions.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 60</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">24.1.8</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Capability of an iterator is
- too much restricted by concept.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Concept of std::Range is
- defined as:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">concept Range&lt;typename T&gt;
- {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">InputIterator iterator;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">iterator begin(T&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">iterator end(T&amp;);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">So the following code
- generates an error.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;std::Range Rng&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void sort(Rng&amp; r)</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.08in; text-indent: -0.08in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// error! Rng::iterator does
- not satisfy requirements of a random</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.07in; text-indent: 0.08in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// access iterator.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::sort(begin(r), end(r));</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::vector&lt;int&gt; v; //
- vector::iterator is a random access iterator.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">sort(v);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">This is because the concept of
- an iterator of std::Range is InputIterator. For this reason, a
- random access iterator loses its capability when passed to a
- std::Range parameter.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">To be able to work the above
- code, we need to write as follows:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;std::Range T&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">requires
- std::RandomAccessIterator&lt;T::iterator&gt; &amp;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::ShuffleIterator&lt;T::iterator&gt;
- &amp;&amp;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::LessThanComparable&lt;T::iterator::value_type&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void sort(T&amp; r)</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">sort(begin(r), end(r));</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::vector&lt;int&gt; v;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">sort(v);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">It needs quiet a few amount of
- codes like this only to recover random access capability from
- InputIterator concept.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">We can write the following
- valid code with Boost.Range, which is implemented with using C++03
- SFINAE.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class Range&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void sort(Range&amp; r)</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">{</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::sort(boost::begin(r),
- boost::end(r));</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">std::vector&lt;int&gt; v;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">sort(v); // OK</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">One of the motivation to
- introduce concepts are supporting template programming techniques
- by language directly to eliminate hacky techniques such as
- tag-dispatch, SFINAE and Type Traints. But SFINAE will be kept
- using because it needs quite a few amount of codes without using
- SFAINAE.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add InputRange, OutputRange,
- ForwardRange, BidirectionalRange and RandomAccessRange.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 269</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">'decrements
- for negative n' seems to imply a negative number of decrement
- operations, which is odd.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Need
- simple, clearer wording</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 270</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- reachability constraint in p5 means that a negavite result,
- implying decrements operations in p4, is not possible</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Split
- the two overloads into separate descriptions, where reachability
- is permitted to be in either direction for RandomAccessIterator</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 271</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6,7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">next/prev
- return an incremented iterator without changing the value of the
- original iterator. However, even this may invalidate an
- InputIterator. A ForwardIterator is required to guarantee the
- 'multipass' property.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- InputIterator constraint with FOrwardIterator in next and prev
- function templates.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 272</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">reverse_iterator
- and move_iterator use different formulations for their comparison
- operations. move_iterator merely requires the minimal set of
- operations, &lt; and ==, from its underlying iterator and
- synthesizes all oprations from these two. reverse_iterator relies
- on the undelying iterator to support all comparision operations
- directly. In practice, move_iterator can only be implemented this
- way as it must support iterator types that are merely
- InputIterators, and so SemiRegular and not Regular. However,
- reserse_iterator has an existing specification and any change of
- semantic could change behaviour of conforming programs today -
- although an iterator that yields different results for (a &gt; b)
- than (b &lt; a) may fall foul of some semantic consistency
- requirements, even if the syntax is met.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Rephrase
- the reverse_iterator comparison operations using only operators &lt;
- and ==, as per the move_iterator specification.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 274</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4,
- 24.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- subclauses for standard iterator adaptors could be better
- organised. There are essentially 3 kinds of iterator wrappers
- provided, stream iterators adapt streams and get their own
- subsection. insert iterators adapt containers, and get their own
- subsection but it is inserted into the middle of 24.4 Predifined
- iterators. reverse_iterator and move_iterator adpat other
- iterators, but their presentation is split by insert iterators</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Promote
- 24.4.2 [insert.iterators] up one level to 24.6. Emphasize that
- insert iterators adapt containers Retarget 24.4 [predef.iterators]
- as iterator adapters for iterator templates that wrap other
- iterators.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 275</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- constructor template taking a single Iterator argument will be
- selected for Copy Initialization instead of the non-template
- constructor taking a single Iterator argument selected by Direct
- Initialization.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- reverse_iterator template constructor taking a single Iterator
- argument should be explicit.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 276</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is odd to have a mix of declaration stlyes for operator+
- overloads. Prefer if either all are member functions, or all are
- 'free' functions.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Make
- the member operators taking a difference_type argument non-member
- operators</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 277</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4.1.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- default constructor default-initializes current, rather than
- value-initializes. This means that when Iterator corresponds to a
- trivial type, the current member is left un-initialized, even when
- the user explictly requests value intialization! At this point, it
- is not safe to perform any operations on the reverse_iterator
- other than assign it a new value or destroy it. Note that this
- does correspond to the basic definition of a singular iterator.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">i/
- Specify value initialization rather than default intialization or
- ii/ specify = default; rather than spell out the semantic. This
- will at least allow users to select value initialization and copy
- the iterator value. or iii/ Add a note to the description
- emphasizing the singular nature of a value-initialized reserve
- iterator.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 278</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4.1.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">There
- is an inconsistency between the constructor taking an iterator and
- the constructor template taking a reverse_iterator where one
- passes by value, and the other by const reference. The by-value
- form is preferred as it allows for efficient moving when copy
- elision fails to kick in.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- the const reverse_iterator&lt;U&gt; &amp; parameter to
- pass-by-value</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 279</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4.1.2.12,
- 24.4.3.2.12</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- reason the return type became unspecified is LWG issue 386. This
- reasoning no longer applies as there are at least two ways to get
- the right return type with the new language facilities added since
- the previous standard.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Specify
- the return type using either decltype or the Iter concept map</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 280</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4.1.2.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- presence of the second iterator value is surprising for many
- readers who underestimate the size of a reverse_iterator object.
- Adding the exposition only member that is required by the semantic
- will reduce confusion.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- reverse_iterator expsoition only member tmp as a comment to class
- declaration, as a private member</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 281</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4.1.2.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- current specification for return value will always be a true
- pointer type, but reverse_iterator supports proxy iterators where
- the pointer type may be some kind of 'smart pointer'</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- the existing returns specification with a copy of the operator*
- specification that returns this-&gt;tmp.operator-&gt;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 282</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4.2.1,
- 24.4.2.2.2, 24.4.2.3, 24.4.2.4.2, 24.4.2.5, 24.4.2.6.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">n/a</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Insert
- iterators of move-only types will move from lvalues</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- an additional constrained overload for operator= that requires
- !CopyConstructible&lt;Cont::value_type&gt; and mark it =delete.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 283</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.4.2.5,
- 24.4.2.6.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">postincrement
- operator overloads traditionally return by value - insert_iterator
- is declared as return by reference. The change is harmless in this
- case, but either front/back_insert_iterator should take the
- matching change for consistency, or this function should
- return-by-value</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">change
- operator++(int) overload to return by value, not reference.
- Affects both class summary and operator definition in p</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 61</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">24.4.3.2.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">nd</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;intializing&quot;
- should be &quot;in<U>i</U>tializing&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add &quot;i&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 284</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- stream iterators need constraining with concepts/requrires
- clauses.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- constraints</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 285</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1,2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Much
- of the content of p1 and the whole of p2 is a redundant
- redefinition of InputIterator. It should be simplified</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- p2. Simplify p1 and add a cross-reference to the definition of
- InputIterator concept.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 286</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">To
- the casual reader it is not clear if it is intended to be able to
- assign to istream_iterator objects. Specifying the copy
- constructor but relying on the implicit copy-assign operator is
- confusing.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Either
- provide a similar definition to the copy-assign operator as for
- the copy constructor, or strike the copy constructor</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 287</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is not clear what the intial state of an istream_iterator should
- be. Is _value_ initialized by reading the stream, or default/value
- initialized? If it is initialized by reading the stream, what
- happens if the initialization is deferred until first dereference,
- when ideally the iterator value should have been that of an
- end-of-stream iterator which is not safely dereferencable?</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Specify
- _value_ is initialized by reading the stream, or the iterator
- takes on the end-of-stream value if the stream is empty</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 288</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- provided specification is vacuous, offering no useful information.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Either
- strike the specification of the copy constructor, or simply
- replace it with an = default definition.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 289</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5.1.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is very hard to pick up the correct specification for
- istream_iterator::operator== as the complete specification
- requires reading two quite disconnected paragraphs, 24.5.1p3, and
- 24.5.1.2p6. Reading just the specifaction of the operation itself
- suggests that end-of-stream iterators are indistinguishable from
- 'valid' stream iterators, which is a very dangerous misreading.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Merge
- 24.5.1p3, equality comparison of end-of-stream-iterators, into
- 24.5.1.2p6, the specification of the equality operator for
- istream_iterator.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 290</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- character type of a string delimiter for an ostream_iterator
- should be const charT *, the type of the elements, not char *, a
- narrow character string.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- char * with const charT *</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 291</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">ostream_iterator
- postincrement operator returns by reference rather than by value.
- This may be a small efficiency gain, but it is otherwise
- unconventional. Prefer return-by-value.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ostream_iterator
- operator++(int);</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 34</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">24.5.3
- [istreambuf.iterator]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">There
- are two public sections, and the content of the second one is
- indented with respect to the first. I don't it should be.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 292</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Prefer
- the use of the new nullptr constant to the zero literal when using
- a null pointer in text.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- istreambuf_iterator(0) to istreambuf_iterator(nullptr)</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 293</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2,3,4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- listed paragraphs redundantly redefine an input iterator, and
- redundancy can be a dangerous thing in a specification. Suggest a
- simpler phrasing below.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">2.
- The result of operator*() on an end of stream is undefined. For
- any other iterator value a char_type value is returned. 3. Two end
- of stream iterators are always equal. An end of stream iterator is
- not equal to a non-end of stream iterator. 4. As
- istreambuf_iterator() is an InputIterator but not a
- ForwardIterator, istreambuf_iterators object can be used only for
- one-pass algorithms. It is not possible to assign a character via
- an input iterator. </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 294</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">24.5.3.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Implicit
- converting constructors can be invoked at surprising times, so
- there should always be a good reason for declaring one.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Mark
- the two single-argument constructors take a stream or stream
- buffer as explicit. The proxy constructor should remain implicit.
- explicit istreambuf_iterator(basic_istream&lt;charT,traits&gt;&amp;
- s) throw(); explicit
- istreambuf_iterator(basic_streambuf&lt;charT,traits&gt;* s)
- throw(); </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 295</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">THere
- is a level of redundancy in the library specification for many
- algorithms that can be eliminated with the combination of concepts
- and default parameters for function templates. Eliminating
- redundancy simplified specification and reduces the risk of
- inttroducing accidental inconsistencies.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Adopt
- n2743, or an update of that paper.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 62</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">25,
- 25.3.1.5, 26.3.6.5</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-left: 0.2in; text-indent: -0.2in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The return types of
- is_sorted_until function and is_heap_until function are iterator.
- But basically, the return type of is_xxx function is bool. And the
- return type of lower_bound function and upper_bound is iterator.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.2in; margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">So we think that it is
- reasonable to change those two functions.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="text-indent: 0.2in; margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Change &quot;is_sorted_until&quot;
- to &quot;sorted_bound&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Change &quot;is_heap&quot;
- to &quot;heap_bound&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 296</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25.1.8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- 'Returns' of adjacent_find requires only HasEqualTo, or a
- Predicate. Requiring EqualityComparable or EquivalenceRelation
- seems too strong and not useful.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- EqualityComparable to HasEqualTo and EquivalnceRelation to
- Predicate</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 297</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25.2.11</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- definition of rotate_copy is very complicated. It is equivalent
- to: return copy(first, middle, copy(middle, last, result));</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- 'effects' to, returns, requires, complexity to: effects:
- equivalent to: return copy(first, middle, copy(middle, last,
- result));</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 298</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25.2.13</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">13</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">partition_point
- requires a partitioned array</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">requires:
- is_partitioned(first, last, pred) != false;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 299</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Should
- be consistent in style use of concepts in template parameter
- lists. The auto-OutputIterator sytle used in std::copy is probably
- preferred.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- way signature is declared: template&lt;InputIterator InIter,
- OutputIterator&lt;auto, RvalueOf&lt;InIter::reference&gt;::type&gt;
- OutIter&gt; OutIter move(InIter first, InIter last, OutIter
- result); </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 300</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25.2.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Since
- publishing the original standard, we have learned that swap is a
- fundamental operation, and several common idioms rely on it -
- especially those related to exception safety. As such it belongs
- in the common &lt;utility&gt; header rather than the broader
- &lt;algorithm&gt; header, and likewise should move to clause 20.
- For backwards compatiblility the algorithm header should be
- required to #include &lt;utility&gt;, which would be covered in
- the resolution of LWG issue 343. There are already dependencies in
- &lt;algorithm&gt; on types declared in this header, so this
- comment does not create a new dependency.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- primary swap template from &lt;algorithm&gt; into &lt;utility&gt;.
- Move 25.2.3 to somewhere under 20.2. Require &lt;algorithm&gt; to
- #include &lt;utility&gt; to access pair and provide legacy support
- for finding swap.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 301</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25.2.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">replace
- and replace_if have the requirement: OutputIterator&lt;Iter,
- Iter::reference&gt; Which implies they need to copy some values in
- the range the algorithm is iterating over. This is not however the
- case, the only thing that happens is const T&amp;s might be copied
- over existing elements (hence the OutputIterator&lt;Iter, const
- T&amp;&gt;</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- OutputIterator&lt;Iter, Iter::reference&gt; from replace and
- replace_if</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 302</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">the
- concept StrictWeakOrder covers the definition of a strict weak
- ordering, described in paragraph 4.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- 4, and mention StrictWeakOrder in paragraph 1.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 303</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">This
- paragraph just describes is_partitioned</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">6
- A sequence [start,finish) is partitioned with respect to an
- expression f(e) if is_partitioned(start, finish, e) != false</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 304</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25.3.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- requires clauses of push_heap, pop_heap and make_heap are
- inconsistently formatted, dispite being identical</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Format
- them identically.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 305</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">25.3.7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1,
- 9, 17</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- negative requirement on IsSameType is a hold-over from an earlier
- draught with a variadic template form of min/max algorith. It is
- no longer necessary.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- the !IsSameType&lt;T, Compare&gt; constraint on min/max/minmax
- algorithms</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 84</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">26</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ge</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Parts of the numerics chapter
- are not concept enabled.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 35</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">26.3
- [Complex numbers]</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">te</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Instantiations
- of the class template complex&lt;&gt; have to be allowed for
- integral types, to reflect existing practice and ISO standards
- (LIA-III).</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 306</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">26.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Random
- number library component cannot be used in constrained templates</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- constraints for the random number library </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 63</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">26.4.8.5.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">No constructor of
- discrete_distribution that accepts initializer_list.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">discrete_distribution
- initialize distribution by a given range (iterators), but
- temporary variable of a container or an array is needed in the
- following case.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">int ar[] = {1, 2, 3};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">discrete_distribution&lt;&gt;
- dist(ar, ar+3);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Other libraries also accept
- initializer_list, so change discrete_distribution library to
- accept initializer_list too.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add the following constructer.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>discrete_distribution(initializer_list&lt;result_type&gt;);</U></FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 64</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">26.5.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- &ldquo;<FONT SIZE=2 STYLE="font-size: 9pt">valarray&lt;T&gt;&amp;
- operator+= (initializer_list&lt;T&gt;);&rdquo; is not defined.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add valarray&lt;T&gt;&amp;
- operator+= (initializer_list&lt;T&gt;);</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 307</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">26.7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Footnote
- 288</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- footnote refers to TR1, which is not a defined term in this
- standard. Drop the reference to TR1, those templates are a regular
- part of the standard now and how they were introduced is no longer
- relevant.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Drop
- the reference to TR1.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 85</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ge</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The input/output chapter is
- not concept enabled.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 308</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">27</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><SPAN LANG="en-US">iostreams
- library cannot be used from constrained templates</SPAN></FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- constraints for the iostreams library, clause 27 </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 65</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27.4.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Switch from
- &ldquo;unspecified-bool-type&rdquo; to</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="zxx">&#12288;&ldquo;</SPAN></FONT><FONT SIZE=2 STYLE="font-size: 9pt">explicit
- operator bool() const&rdquo;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;operator <I>unspecified-bool-type</I>()
- const;&quot; with &quot;explicit operator bool() const;&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 66</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27.4.4.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Switch from
- &ldquo;unspecified-bool-type&rdquo; to</FONT><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif"><SPAN LANG="zxx">&#12288;&ldquo;</SPAN></FONT><FONT SIZE=2 STYLE="font-size: 9pt">explicit
- operator bool() const&rdquo;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Replace
- &quot;operator <I>unspecified-bool-type</I>()
- const;&quot; with &quot;explicit operator bool() const;&quot;</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 36</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 10pt" FACE="Consolas, monospace">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">27.6.1.2.2
- [istream.formatted.arithmetic]</FONT></FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1,
- 2, and 3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">iostate
- err = 0;</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">iostate
- is a bitmask type and so could be an enumeration. Probably using</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">goodbit
- is the solution.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 37</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">27.6.1.2.2
- [istream.formatted.arithmetic]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">else
- if (lval &lt; numeric_limits&lt;int&gt;::min()</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">||
- numeric_limits&lt;int&gt;::max() &lt; lval))</FONT></P>
- <P STYLE="margin-bottom: 0in"><BR>
- </P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">The
- parentheses aren't balanced.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 67</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27.7.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringbuf dose not use
- concept.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Replace &ldquo;class
- Allocator&rdquo; to &ldquo;Allocator Alloc&rdquo;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,
- class traits = char_traits&lt;charT&gt;,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>Allocator
- Alloc</U> =
- allocator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class basic_stringbuf :
- public basic_streambuf&lt;charT,traits&gt; {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 27.7.1.1 Constructors:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- basic_stringbuf(ios_base::openmode which</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">=
- ios_base::in | ios_base::out);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit basic_stringbuf</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">(const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- str,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">ios_base::openmode which
- = ios_base::in | ios_base::out);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringbuf(basic_stringbuf&amp;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
-
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 27.7.1.3 Get and set:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;
- str() const;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- str(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- s);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
-
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator
- Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_stringbuf&lt;charT, traits, <U>Alloc</U>&gt;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringbuf&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator
- Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_stringbuf&lt;charT, traits, <U>Alloc</U>&gt;&amp;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringbuf&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator
- Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_stringbuf&lt;charT, traits, <U>Alloc</U>&gt;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringbuf&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 68</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27.7.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_istringstream dose not
- use concept.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Replace &ldquo;class
- Allocator&rdquo; to &ldquo;Allocator Alloc&rdquo;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,
- class traits = char_traits&lt;charT&gt;,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>Allocator
- Alloc</U> =
- allocator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class basic_istringstream :
- public basic_istream&lt;charT,traits&gt; {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef charT
- char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- traits::int_type int_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- traits::pos_type pos_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- traits::off_type off_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef traits
- traits_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef <U>Alloc</U>
- allocator_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 27.7.2.1 Constructors:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- basic_istringstream(ios_base::openmode which = ios_base::in);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- basic_istringstream(</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- str,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">ios_base::openmode
- which = ios_base::in);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_istringstream(basic_istringstream&amp;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 27.7.2.2 Assign and
- swap:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_istringstream&amp;
- operator=(basic_istringstream&amp;&amp; rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_istringstream&amp;&amp; rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
-
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 27.7.2.3 Members:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringbuf&lt;charT,traits,<U>Alloc</U>&gt;*
- rdbuf() const;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;
- str() const;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- str(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- s);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">private:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">//
- basic_stringbuf&lt;charT,traits,<U>Alloc</U>&gt;
- sb; exposition only</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator
- Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_istringstream&lt;charT, traits, <U>Alloc</U>&gt;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_istringstream&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator
- Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_istringstream&lt;charT, traits, <U>Alloc</U>&gt;&amp;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_istringstream&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator
- Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_istringstream&lt;charT, traits, <U>Alloc</U>&gt;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_istringstream&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 69</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27.7.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_ostringstream dose not
- use concept.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Replace &ldquo;class
- Allocator&rdquo; to &ldquo;Allocator Alloc&rdquo;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,
- class traits = char_traits&lt;charT&gt;,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>Allocator
- Alloc</U> =
- allocator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class basic_ostringstream :
- public basic_ostream&lt;charT,traits&gt; {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// types:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef charT
- char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- traits::int_type int_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- traits::pos_type pos_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- traits::off_type off_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef traits
- traits_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef <U>Alloc</U>
- allocator_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 27.7.3.1
- Constructors/destructor:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- basic_ostringstream(ios_base::openmode which = ios_base::out);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- basic_ostringstream(</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- str,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">ios_base::openmode
- which = ios_base::out);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_ostringstream(basic_ostringstream&amp;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 27.7.3.2 Assign/swap:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_ostringstream&amp;
- operator=(basic_ostringstream&amp;&amp; rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_ostringstream&amp;&amp; rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 27.7.3.3 Members:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringbuf&lt;charT,traits,<U>Alloc</U>&gt;*
- rdbuf() const;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;
- str() const;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- str(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- s);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">private:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">//
- basic_stringbuf&lt;charT,traits,<U>Alloc</U>&gt;
- sb; exposition only</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator</U></FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#339966">
- </FONT><FONT SIZE=2 STYLE="font-size: 9pt"><U>Alloc</U>&gt;</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_ostringstream&lt;charT, traits, <U>Alloc</U>&gt;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_ostringstream&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator</U></FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#339966">
- </FONT><FONT SIZE=2 STYLE="font-size: 9pt"><U>Alloc</U>&gt;</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_ostringstream&lt;charT, traits, <U>Alloc</U>&gt;&amp;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_ostringstream&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator
- Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_ostringstream&lt;charT, traits, <U>Alloc</U>&gt;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_ostringstream&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 71</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27.7.3</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">&quot;template&quot;
- is missing in &quot;class basic_ostringstream&quot; of the title
- of the chapter.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">27.7.3 Class
- basic_ostringstream</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27.7.3
- Class <U>template</U>
- basic_ostringstream</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 72</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27.7.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringstream dose not
- use concept.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Replace &quot;class Allocator&quot;
- to &quot;Allocator Alloc&quot;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp; <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class charT,
- class traits = char_traits&lt;charT&gt;,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>Allocator
- Alloc</U> =
- allocator&lt;charT&gt; &gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">class basic_stringstream</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">: public
- basic_iostream&lt;charT,traits&gt; {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">public:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// types:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef charT
- char_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- traits::int_type int_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- traits::pos_type pos_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef typename
- traits::off_type off_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef traits
- traits_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">typedef <U>Alloc</U>
- allocator_type;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// constructors/destructor</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- basic_stringstream(</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">ios_base::openmode which =
- ios_base::out|ios_base::in);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- basic_stringstream(</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">const
- basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- str,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">ios_base::openmode which =
- ios_base::out|ios_base::in);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringstream(basic_stringstream&amp;&amp;
- rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// 27.7.5.1 Assign/swap:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_stringstream&amp;&amp; rhs);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// Members:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringbuf&lt;charT,traits,<U>Alloc</U>&gt;*
- rdbuf() const;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_string&lt;charT,traits,<U>Alloc</U>&gt;
- str() const;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- str(const basic_string&lt;charT,traits,<U>Alloc</U>&gt;&amp;
- str);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">private:</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">// basic_stringbuf&lt;charT,
- traits&gt; sb; exposition only</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator
- Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_stringstream&lt;charT, traits, <U>Alloc</U>&gt;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringstream&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator</U></FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#339966">
- </FONT><FONT SIZE=2 STYLE="font-size: 9pt"><U>Alloc</U>&gt;</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_stringstream&lt;charT, traits, <U>Alloc</U>&gt;&amp;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringstream&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class charT, class traits, <U>Allocator</U></FONT><FONT SIZE=2 STYLE="font-size: 9pt" COLOR="#339966">
- </FONT><FONT SIZE=2 STYLE="font-size: 9pt"><U>Alloc</U>&gt;</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">void
- swap(basic_stringstream&lt;charT, traits, <U>Alloc</U>&gt;&amp;
- x,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">basic_stringstream&lt;charT,
- traits, <U>Alloc</U>&gt;&amp;&amp;
- y);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 73</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">27.8.1.14</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">It is a problem from C++98,
- fstream cannot appoint a filename of wide character string(const
- wchar_t and const wstring&amp;).</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add interface corresponding to
- wchar_t, char16_t and char32_t.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 86</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">28</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ge</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The regular expressions
- chapter is not concept enabled.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 309</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">28</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Regular
- expressions cannot be used in constrained templates</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- constraints for the regular expression library, clause 28 </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 310</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">28</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- regex chapter uses iterators in the old pre-concept style, it
- should be changed to use concepts instead.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Use
- concepts for iterator template arguments throughout.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 314</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">28.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- swap overloads for regex classes are only supplied for l-value
- references. Other sections of the library (eg 21 strings or 23
- containers) provide two extra overloads taking an r-value
- reference as the first and second argument respectively.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the missing overloads to 28.4 and the corresponding later sections
- in 28 for each swap function. We want to accept AMs paper which
- proposes a single overload with two r-value references</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 315</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">28.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">p6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">6
- Effects: string_type str(first, last); return
- use_facet&lt;collate&lt;charT&gt; &gt;(
- getloc()).transform(&amp;*str.begin(), &amp;*str.end()); Is it
- legal to dereference str.end() ?</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Reword
- to effect clause to use legal iterator dereferences </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 316</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">28.4
- ff</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- constructors for regex classes do not have an r-value overload.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- the missing r-value constructors to regex classes.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 317</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">28.8</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">basic_string
- has both a constructor and an assignment operator that accepts an
- initializer list, basic_regex should have the same.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">In
- the basic_regex synopsis, after: basic_regex&amp; operator=(const
- charT* ptr); add: basic_regex&amp;
- operator=(initializer_list&lt;charT&gt; il); And after paragraph
- 20 add: basic_regex&amp; operator=(initializer_list&lt;charT&gt;
- il); Effects: returns assign(il.begin(), il.end()); </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 74</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">28.8</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- &ldquo;<FONT SIZE=2 STYLE="font-size: 9pt">basic_regx &amp;
- operator= (initializer_list&lt;T&gt;);&rdquo; is not defined.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add basic_regx &amp; operator=
- (initializer_list&lt;T&gt;);</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 318</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">28.8.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">para
- 22</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Constructor
- definition should appear with the other constructors not after
- assignment ops.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- para 22 to just after para 17.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 319</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">28.12.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">It
- was always expected that regex_token_iterator would be
- constructible from an array literal: indeed ideally this is the
- prefered method of initializing such an object. However, the best
- we could do in C++0x was: template &lt;std::size_t N&gt;
- regex_token_iterator(BidirectionalIterator a,
- BidirectionalIterator b, const regex_type&amp; re, const int
- (&amp;submatches)[N], regex_constants::match_flag_type m =
- regex_constants::match_default); Now that we have
- initializer_lists we should use them to remove this particular
- wart.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">To
- the synopsis for regex_token_iterator, after template &lt;std::size_t
- N&gt; regex_token_iterator(BidirectionalIterator a,
- BidirectionalIterator b, const regex_type&amp; re, const int
- (&amp;submatches)[N], regex_constants::match_flag_type m =
- regex_constants::match_default); add
- regex_token_iterator(BidirectionalIterator a,
- BidirectionalIterator b, const regex_type&amp; re,
- initializer_list&lt;int&gt; submatches,
- regex_constants::match_flag_type m =
- regex_constants::match_default); In 28.12.2.1 add the declaration:
- regex_token_iterator(BidirectionalIterator a,
- BidirectionalIterator b, const regex_type&amp; re,
- initializer_list&lt;int&gt; submatches,
- regex_constants::match_flag_type m =
- regex_constants::match_default); And to the end of para 3 add: The
- forth constructor initializes the member subs to hold a copy of
- the sequence of integer values in the range [submatches.begin(),
- submatches.end()).</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 87</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">29</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ge</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The atomics chapter is not
- concept enabled. The adopted paper, N2427, did have those
- concepts.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 311</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">29</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Atomic
- types cannot be used generically in a constrained template</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- constraints for the atomics library, clause 29 </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 312</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">29</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- contents of the &lt;stdatomic.h&gt; header are not listed
- anywhere, and &lt;cstdatomic&gt; is listed as a C99 header in
- chapter 17. If we intend to use these for compatibility with a
- future C standard, we should not use them now.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- &lt;cstdatomic&gt; from the C99 headers in table 14. Add a new
- header &lt;atomic&gt; to the headers in table 13. Update chapter
- 29 to remove reference to &lt;stdatomic.h&gt; and replace the use
- of &lt;cstdatomic&gt; with &lt;atomic&gt;. If and when WG14 adds
- atomic operations to C we can add corresponding headers to table
- 14 with a TR.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 75</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">29</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">A definition of enum or struct
- is the style of C using typedef.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Change to a style of C++.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">29.1</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef</U>
- enum memory_order {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">memory_order_relaxed,
- memory_order_consume, memory_order_acquire,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">memory_order_release,
- memory_order_acq_rel, memory_order_seq_cst</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} memory_order;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">enum memory_order {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">memory_order_relaxed,
- memory_order_consume, memory_order_acquire,</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">memory_order_release,
- memory_order_acq_rel, memory_order_seq_cst</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">29.3.1</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef</U>
- struct atomic_bool {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} atomic_bool;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">struct atomic_bool {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef</U>
- struct atomic_<I>itype</I>
- {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}
- atomic_<I>itype</I>;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">struct
- atomic_<I>itype</I>
- {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">29.3.2</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef</U>
- struct atomic_address {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} atomic_address;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">struct atomic_address {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">29.5</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>typedef</U>
- struct atomic_flag {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">} atomic_flag;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">namespace std {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">struct atomic_flag {</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">...</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">};</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">}</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 313</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">29.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">seq_cst
- fences don't necessarily guarantee ordering
-
http://home.twcny.rr.com/hinnant/cpp_extensions/issues_preview/lwg-active.html#926></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a new paragraph after 29.1 [atomics.order]p5 that says For atomic
- operations A and B on an atomic object M, where A and B modify M,
- if there are memory_order_seq_cst fences X and Y such that A is
- sequenced before X, Y is sequenced before B, and X precedes Y in
- S, then B occurs later than A in the modifiction order of M. </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 88</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">29.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- &quot;lockfree&quot; facilities do not tell the programmer enough.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Expand the &quot;lockfree&quot;
- facilities. See the attached paper &quot;Issues with the C++
- Standard&quot; under Chapter 29, &quot;atomics.lockfree doesn't
- tell the programmer enough&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 89</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">29.3.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Table
- 122</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The types in the table
- &quot;Atomics for standard typedef types&quot; should be typedefs,
- not classes. These semantics are necessary for compatibility with
- C.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- the classes to typedefs.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Google</FONT></P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 90</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">29.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Are
- atomic functions allowed to have non-volatile overloads?</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Allow non-volatile overloads.
- See the attached paper &quot;Issues with the C++ Standard, under
- Chapter 29, &quot;Are atomic functions allowed to have
- non-volatile overloads?&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 91</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">29.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Whether
- or not a failed compare_exchange is a RMW operation (as used in
- 1.10 [intro.multithread]) is unclear.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">Make
- failing compare_exchange operations </FONT><STRONG><FONT SIZE=2 STYLE="font-size: 9pt">not</FONT></STRONG><FONT SIZE=2 STYLE="font-size: 9pt">
- be RMW. See the attached paper under &quot;atomic RMW status of
- failed compare_exchange&quot;</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 92</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">29.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- effect of memory_order_consume with atomic RMW operations is
- unclear.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Follow the lead of fences
- [atomics.fences], and promote memory_order_consume to
- memory_order_acquire with RMW operations.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 76</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">30</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">A
- description for &quot;<I>Throws:
- </I>Nothing.&quot; are
- not unified.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">At
- the part without throw, &quot;<I>Throws:
- </I>Nothing.&quot;
- should be described.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add
- &quot;<I>Throws:</I>
- Nothing.&quot; to the following.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">30.2.1.6
- , 1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">30.3.3.1
- , 4</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">30.3.3.2.1
- , 6</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">30.4.1
- , 7</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- and 8</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">30.4.2
- , 6</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">,
- 7</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">,19</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">,21th
- and 25</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 93</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">30</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">ge</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The thread chapter is not
- concept enabled.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P ALIGN=JUSTIFY STYLE="margin-right: -0.18in; margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">UK<BR> 320</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Threads
- library cannot be used in constrained templates</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- constraints for the threads library, clause 30 </FONT>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 321</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Throughout
- this clause, the term Requires: is used to introduce compile time
- requirements, which we expect to be replaced with concepts and
- requires in code. Run-time preconditions are introduced with the
- term &quot;Preconditions:&quot; which is not a defined part of the
- library documentation structure (17.5.2.4). However, this is
- exactly the direction that BSI would like to see the organisation
- move, replacing Requires: clauses with Preconditions: clasues
- throught the library. See comment against clause 17 for more
- details.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Decument
- Preconditions: paragraphs in 17.5.2.4, and use consistently
- through rest of the library.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 94</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">30.1.2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">The first
- sentence of para 1 suggests that no other library function is
- permitted to call operating system or low level APIs.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">Rewrite
- para 1 as: &ldquo;<FONT COLOR="#000000"> Some functions described
- in this Clause are specified to throw exceptions of type
- system_error (</FONT><FONT COLOR="#0000ff">19.4.5</FONT><FONT COLOR="#000000">
- ). Such exceptions shall be thrown if a call to an operating
- system or underlying API results in an error that prevents the
- library function from satisfying its postconditions or from
- returning a meaningful value.&rdquo;</FONT></FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 95</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">30.1.3</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P>&ldquo;<FONT SIZE=2 STYLE="font-size: 9pt">native_handle_type&rdquo;
- is a typedef, not a class member.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Several
- classes described in this Clause have a member native_handle
- (of type native_handle_type)
- . The</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">presence
- of this member and its semantics is implementation defined. [ Note:
- This member allows implementations to provide access to
- implementation details. The name of the member and the type are
- specified to facilitate portable compile-time detection. Actual
- use of this member or the corresponding type is inherently
- non-portable. &mdash;end
- note ]</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 96</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">30.1.4</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">There is no
- definition here for monotonic clock.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Implementations
- should use a <I>monotonic
- clock</I> to measure
- time for these functions. A monotonic clock measures real time,
- but cannot be set, and is guaranteed to have no negative clock
- jumps.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 322</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.1.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Not
- all systms can provide a monotonic clock. How are they expected to
- treat a _for function?</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- at least a note explaining the intent for systems that do not
- support a monotonic clock.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 323</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- presence of a non-explicit variadic template constructor alongside
- an explicit single-argument constructor can lead to behaviour that
- is not intended: the variadic constructor will be selected for
- implicit conversions, defeating the purpose of the explicit
- single-argument constructor. Additionally the single-argument
- constructor is redundant; the variadic constructor can provide
- identical functionality with one *fewer* copies if the supplied
- func is an lvalue.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Mark
- constructor template &lt;class F, class ...Args&gt; thread(F&amp;&amp;
- f, Args&amp;&amp;... args); as explicit and remove the
- single-argument constructor.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 324</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.2.1.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">thread::id
- objects should be as useable in hashing containers as they are in
- ordered associative containers.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- thread::id support for std::hash</FONT></P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><BR>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 77</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">30.2.1.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;CopyConstructible&quot;
- and &quot;MoveConstructible&quot; in &quot;<I>Requires:
- </I>F and each Ti in
- Args shall be CopyConstructible if an lvalue and otherwise
- MoveConstructible.&quot; are reflected by interface.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Add a concept for constructor
- of thread.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 78</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">30.2.1.2</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 11pt"><FONT SIZE=2 STYLE="font-size: 9pt">4</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">th</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- paragraph, 1</FONT><SUP><FONT SIZE=2 STYLE="font-size: 9pt">st</FONT></SUP><FONT SIZE=2 STYLE="font-size: 9pt">
- line</FONT></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">In &quot;F and each Ti in
- Args&quot;, 'Ti' is not clear.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Replace &quot;Ti&quot; with
- &quot;args&quot;</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">US
- 97</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">30.2.1.3</FONT></P>
- </TD>
- <TD>
- <P> <FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">detach-on-destruction
- may result in &ldquo;escaped&rdquo; threads accessing objects with
- bounded lifetime after the end of their lifetime.</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">See
- document WG21 N2802=08-0312 written by Hans Boehm.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">US
- 98</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">30.2.1.3,
- 30.2.1.4</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- current defined behavior for the std::thread destructor is to
- detach the thread. Unfortunately, this behavior exposes
- programmers to tricky, hard-to-diagnose, undefined behavior.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Change destruction behavior to
- undefined behavior, with a note strongly encouraging termination.
- See the attached paper &quot;Issues with the C++ Standard&quot;
- under Chapter 30, &quot;Implicit thread detach is harmful&quot;.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 325</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.3.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">We
- believe constexpr literal values should be a more natural
- expression of empty tag types than extern objects as it should
- improve the compilers ability to optimize the empty object away
- completely.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Replace
- the extern declarations: extern const defer_lock_t defer_lock;
- extern const try_to_lock_t try_to_lock; extern const adopt_lock_t
- adopt_lock; with constexpr values constexpr defer_lock_t
- defer_lock{}; constexpr try_to_lock_t try_to_lock{}; constexpr
- adopt_lock_t adopt_lock{}; </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 326</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.3.3.2.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">The
- precondition that the mutex is not owned by this thread offers
- introduces the risk of un-necessary undefined behaviour into the
- program. The only time it matters whether the current thread owns
- the mutex is in the lock operation, and that will happen
- subsequent to construction in this case. The lock operation has
- the identical pre-condition, so there is nothing gained by
- asserting that precondition earlier and denying the program the
- right to get into a valid state before calling lock.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- 30.3.3.2.1p7</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 327</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.3.3.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">4,
- 9, 14, 19</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Not
- clear what the specification for error condition
- resource_deadlock_would_occur means. It is perfectly possible for
- this thread to own the mutex without setting owns to true on this
- specific lock object. It is also possible for lock operations to
- succeed even if the thread does own the mutex, if the mutex is
- recursive. Likewise, if the mutex is not recursive and the mutex
- has been locked externally, it is not always possible to know that
- this error condition should be raised, depending on the host
- operating system facilities. It is possible that 'i.e.' was
- supposed to be 'e.g.' and that suggests that recursive locks are
- not allowed. That makes sense, as the exposition-only member owns
- is boolean and not a integer to count recursive locks.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a precondition !owns. Change the 'i.e.' in the error condition to
- be 'e.g.' to allow for this condition to propogate deadlock
- detection by the host OS.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 328</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.3.3.2.2</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">20</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">There
- is a missing precondition that owns is true, or an if(owns) test
- is missing from the effect clause</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a precondition that owns == true. Add an error condition to detect
- a violation, rather than yield undefined behaviour.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 329</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">future,
- promise and packaged_task provide a framework for creating future
- values, but a simple function to tie all three components together
- is missing. Note that we only need a *simple* facility for C++0x.
- Advanced thread pools are to be left for TR2.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- a simple function along the lines of: template&lt; typename F,
- typename ... Args &gt; requires Callable&lt; F, Args... &gt;
- future&lt; Callable::result_type &gt; async( F&amp;&amp; f, Args
- &amp;&amp; ... ); Semantics are similar to creating a thread
- object with a packaged_task invoking f with forward&lt;Args&gt;(args...)
- but details are left unspecified to allow different scheduling and
- thread spawning implementations. It is unspecified whether a task
- submitted to async is run on its own thread or a thread previously
- used for another async task. If a call to async succeeds, it shall
- be safe to wait for it from any thread. The state of thread_local
- variables shall be preserved during async calls. No two incomplete
- async tasks shall see the same value of this_thread::get_id().
- [Note: this effectively forces new tasks to be run on a new
- thread, or a fixed-size pool with no queue. If the library is
- unable to spawn a new thread or there are no free worker threads
- then the async call should fail.]</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 330</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.1</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">30.5.1
- (and then 30.5.7) refer to a specialisation of
- constructible_with_allocator_prefix&lt;&gt; However this trait is
- not in the CD, so references to it should be removed.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the reference to constructible_with_allocator_prefix in 30.5.1
- Remove paragraph 30.5.7</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 79</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">30.5.1</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">The concept of UsesAllocator
- and Allocator should be used.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class R, class
- Alloc&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">struct
- uses_allocator&lt;promise&lt;R&gt;, Alloc&gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class R&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">struct
- constructible_with_allocator_prefix&lt;promise&lt;R&gt; &gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template&lt;class R, Allocator
- Alloc&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">concept_map
- UsesAllocator&lt;promise&lt;R&gt;, Alloc&gt;;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 331</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Not
- clear what it means for a public constructor to be 'exposition
- only'. If the intent is purely to support the library calling this
- constructor then it can be made private and accessed through
- friendship. Otherwise it should be documented for public
- consumption.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Declare
- the constructor as private with a note about intended friendship,
- or remove the exposition-only comment and document the semantics.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 332</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ed</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is not clear without reference to the original proposal how to use
- a future. In particular, the only way for the user to construct a
- future is via the promise API which is documented after the
- presentation of future. Most library clauses feature a small
- description of their components and intended use, it would be most
- useful in this case.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Provide
- a small introductory paragraph, docuenting intended purpose of the
- future class template and the way futures can only be created via
- the promise API.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 333</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">We
- expect the complicated 3-signature specifcation for future::get()
- to be simplified to a single signature with a requires clause by
- the application of concepts.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Requires
- fully baked concepts for clause 30</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 334</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Behaviour
- of get() is undefined if calling get() while not is_ready(). The
- intent is that get() is a blocking call, and will wait for the
- future to become ready.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Effects:
- If is_ready() would return false, block on the asynchronous result
- associated with *this. </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 335</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">std::unique_future
- is MoveConstructible, so you can transfer the association with an
- asynchronous result from one instance to another. However, there
- is no way to determine whether or not an instance has been moved
- from, and therefore whether or not it is safe to wait for it.
- std::promise&lt;int&gt; p; std::unique_future&lt;int&gt;
- uf(p.get_future()); std::unique_future&lt;int&gt;
- uf2(std::move(uf)); uf.wait(); // oops, uf has no result to wait
- for.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a &quot;waitable()&quot; function to unique_future (and
- shared_future) akin to std::thread::joinable(), which returns true
- if there is an associated result to wait for (whether or not it is
- ready). Then we can say: if(uf.waitable()) uf.wait(); </FONT>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 336</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.4</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">It
- is possible to transfer ownership of the asynchronous result from
- one unique_future instance to another via the move-constructor.
- However, it is not possible to transfer it back, and nor is it
- possible to create a default-constructed unique_future instance to
- use as a later move target. This unduly limits the use of
- unique_future in code. Also, the lack of a move-assignment
- operator restricts the use of unique_future in containers such as
- std::vector - vector::insert requires move-assignable for example.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a default constructor with the semantics that it creates a
- unique_future with no associated asynchronous result. Add a
- move-assignment operator which transfers ownership.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 80</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">30.5.4
- , 30.5.5</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Typo, duplicated &quot;&gt;&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&quot;class Period&gt;&gt;&quot;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Remove one</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 337</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">shared_future
- should support an efficient move constructor that can avoid
- unnecessary manipulation of a reference count, much like
- shared_ptr</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a move constructor</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 338</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.5</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">shared_future
- is currently CopyConstructible, but not CopyAssignable. This is
- inconsistent with shared_ptr, and will surprise users. Users will
- then write work-arounds to provide this behaviour. We should
- provide it simply and efficiently as part of shared_future. Note
- that since the shared_future member functions for accessing the
- state are all declared const, the original usage of an immutable
- shared_future value that can be freely copied by multiple threads
- can be retained by declaring such an instance as &quot;const
- shared_future&quot;.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- &quot;=delete&quot; from the copy-assignment operator of
- shared_future. Add a move-constructor
- shared_future(shared_future&amp;&amp; rhs), and a move-assignment
- operator shared_future&amp; operator=(shared_future&amp;&amp;
- rhs). The postcondition for the copy-assignment operator is that
- *this has the same associated state as rhs. The postcondition for
- the move-constructor and move assignment is that *this has the
- same associated as rhs had before the constructor/assignment call
- and that rhs has no associated state.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 339</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">6,
- 7</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Move
- assignment is goiing in the wrong direction, assigning from *this
- to the passed rvalue, and then returning a reference to an
- unusable *this</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Strike
- 6. 7 Postcondition: associated state of *this is the same as the
- associated state of rhs before the call. rhs has no associated
- state. </FONT>
- </P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 340</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">11,
- 12, 13</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">There
- is an implied postcondition that the state of the promise is
- transferred into the future leaving the promise with no associated
- state. It should be spelled out.</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Postcondition:
- *this has no associated state.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 341</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">promise::swap
- accepts its parameter by lvalue reference. This is inconsistent
- with other types that provide a swap member function, where those
- swap functions accept an rvalue reference</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Change
- promise::swap to take an rvalue reference.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 342</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">std::promise
- is missing a non-member overload of swap. This is inconsistent
- with other types that provide a swap member function</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a non-member overload void swap(promise&amp;&amp; x,promise&amp;&amp;
- y){ x.swap(y); }</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 343</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">30.5.6</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">3</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Te</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">The
- move constructor of a std::promise object does not need to
- allocate any memory, so the move-construct-with-allocator overload
- of the constructor is superfluous.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT STYLE="margin-bottom: 0in"><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the constructor with the signature template &lt;class Allocator&gt;
- promise(allocator_arg_t, const Allocator&amp; a, promise&amp;
- rhs);</FONT></P>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">JP
- 81</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">30.5.8</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">ed</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">There are not requirements for
- F and a concept of Allocator dose not use.</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">Correct as follows.</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <BR>
- </P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class F&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit packaged_task(F f);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class F, class
- Allocator&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- packaged_task(allocator_arg_t, const Allocator&amp; a, F f);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class F&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit packaged_task(F&amp;&amp;
- f);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class F, class
- Allocator&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- packaged_task(allocator_arg_t, const Allocator&amp; a, F&amp;&amp;
- f);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">should be</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class F&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>requires
- CopyConstructible&lt;F&gt; &amp;&amp; Callable&lt;F, ArgTypes...&gt;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&amp;&amp;
- Convertible&lt;Callable&lt;F, ArgTypes...&gt;::result_type, R&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit packaged_task(F f);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class F, <U>Allocator
- Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>requires
- CopyConstructible&lt;F&gt; &amp;&amp; Callable&lt;F, ArgTypes...&gt;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&amp;&amp;
- Convertible&lt;Callable&lt;F, ArgTypes...&gt;::result_type, R&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- packaged_task(allocator_arg_t, const <U>Alloc</U>&amp;
- a, F f);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template &lt;class F&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>requires
- CopyConstructible&lt;F&gt; &amp;&amp; Callable&lt;F, ArgTypes...&gt;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&amp;&amp;
- Convertible&lt;Callable&lt;F, ArgTypes...&gt;::result_type, R&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit packaged_task(F&amp;&amp;
- f);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- &nbsp;</P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">template
- &lt;class F, <U>Allocator
- Alloc</U>&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt"><U>requires
- CopyConstructible&lt;F&gt; &amp;&amp; Callable&lt;F, ArgTypes...&gt;</U></FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt">&amp;&amp;
- Convertible&lt;Callable&lt;F, ArgTypes...&gt;::result_type, R&gt;</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in; margin-bottom: 0.04in">
- <FONT SIZE=2 STYLE="font-size: 9pt">explicit
- packaged_task(allocator_arg_t, const <U>Alloc</U>&amp;
- a, F&amp;&amp; f);</FONT></P>
- <P LANG="en-GB" ALIGN=LEFT STYLE="margin-top: 0.04in">
- <BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-23</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Annex
- B</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">p2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">DE-23
- Recursive use of constexpr functions appears to be permitted.
- Since such functions may be required to be evaluated at
- compile-time, Annex B &quot;implementation quantities&quot; should
- specify a maximum depth of recursion.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">In
- Annex B, specify a recursion depth of 256 or a larger value.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-24</FONT></P>
- </TD>
- <TD>
- <P> <FONT SIZE=2 STYLE="font-size: 9pt">Annex
- B</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">p2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">DE-24
- The number of placeholders for &quot;bind&quot; is
- implementation-defined in 20.7.12.1.4, but no minimum is suggested
- in Annex B.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Add
- a miminum of 10 placeholders to Annex B.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">DE-25</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Annex
- B</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">p2</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">te</FONT></P>
- </TD>
- <TD>
- <P LANG="en-GB" STYLE="margin-top: 0.04in; margin-bottom: 0.04in"><FONT SIZE=2 STYLE="font-size: 9pt">DE-25
- Specifying a minimum of 17 recursively nested template
- instantiations is too small for practical purposes. The limit is
- too high to effectively limit compiler resource usage, see
-
http://ubiety.uwaterloo.ca/~tveldhui/papers/2003/turing.pdf . The
- conclusion is that the metric &quot;number of recursively nested
- template instantiations&quot; is inapposite.</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">Remove
- the bullet &quot;Recursively nested template instantiations [17]&quot;.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 38</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">C.2
- [diffs.library]</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">1</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">What
- is ISO/IEC 1990:9899/DAM 1? My guess is that's a typo for ISO/IEC</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">9899/Amd.1:1995
- which I'd have expected to be referenced here (the tables</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">make
- reference to things which were introduced by Amd.1).</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">One
- need probably a reference to the document which introduce char16_t
- and</FONT></P>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">char32_t
- in C (ISO/IEC TR 19769:2004?).</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">UK<BR>
- 344</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Appendix
- D</FONT></P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><FONT SIZE=2 STYLE="font-size: 9pt">Ge</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">It
- is desirable to allow some mechanism to support phasing out of
- deprecated features in the future. Allowing compilers to implement
- a mode where deprecated features are not available is a good first
- step.</FONT></P>
- </TD>
- <TD>
- <P ALIGN=LEFT><FONT SIZE=2 STYLE="font-size: 9pt">Add
- to the definition of deprecated features permission for compilers
- to maintain a conditionally supported mode where deprecated
- features can be disabled, so long as they also default to a mode
- where all deprecated features are supported.</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt">FR
- 39</FONT></P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Index</FONT></P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">ed</FONT></P>
- </TD>
- <TD>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">Some
- definitions seem not indexed (such as /trivially copyable/ or</FONT></P>
- <P STYLE="margin-bottom: 0in">
- <FONT SIZE=2 STYLE="font-size: 9pt" FACE="Arial, sans-serif">/sequenced
- before/), indexing them would be useful (and marking specially the
- page -- say bold or italic -- which reference to the definition
- would increase the usefulness; having a separate index of all
- definitions is something which could also be considered).</FONT></P>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
- <TR VALIGN=TOP>
- <TD>
- <P><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=JUSTIFY><BR>
- </P>
- </TD>
- <TD>
- <P ALIGN=LEFT><BR>
- </P>
- </TD>
- <TD>
- <P><BR>
- </P>
- </TD>
- </TR>
-</TABLE>
-</BODY>
-</HTML>
\ No newline at end of file
+<meta name="generator" content=
+"Microsoft FrontPage 5.0">
+<meta http-equiv="CONTENT-TYPE" content=
+"text/html; charset=us-ascii">
+<title>C++0x CD1 NB Comments</title>
+<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
+<meta name="AUTHOR" content="dow">
+<meta name="CREATED" content="20090221;19590000">
+<meta name="CHANGEDBY" content=" Barry E Hedquist">
+<meta name="CHANGED" content="20090222;18460000">
+<meta name="DESCRIPTION" content="FORM (ISO)">
+<style type="text/css">
+ <!--
+ @page { size: 11.69in 8.27in; margin-right: 0.59in }
+ P { margin-bottom: 0.08in; direction: ltr; color: #000000; text-align: left; widows: 2; orphans: 2 }
+ P.western { font-family: "Arial", sans-serif; font-size: 10pt; so-language: en-US }
+ P.cjk { font-family: "Times New Roman", serif; font-size: 10pt }
+ P.ctl { font-family: "Arial", sans-serif; font-size: 10pt; so-language: ar-SA }
+ TT { font-family: "DejaVu Sans Mono", "Consolas", monospace }
+ -->
+</style>
+<body lang="en-US" text="#000000" dir="ltr">
+<div type="HEADER">
+<table border="1" bordercolor="#000000" cellpadding="7"
+cellspacing="0" style="border-collapse: collapse">
+<tr valign="top">
+<td>
+<p>1</font>
+<td>
+<p><font size="1" style="font-size: 8pt">2</font>
+<td>
+<p><font size="1" style="font-size: 8pt">3</font>
+<td>
+<p><font size="1" style="font-size: 8pt">4</font>
+<td>
+<p><font size="1" style="font-size: 8pt">5</font>
+<td>
+<p><font size="1" style="font-size: 8pt">6</font>
+<td>
+<p><font size="1" style="font-size: 8pt">7</font>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 11pt"><font size="1" style=
+"font-size: 8pt"><b>MB</b></font><sup><font size="1" style=
+"font-size: 6pt"><b>1</b></font></sup><font size="1" style=
+"font-size: 8pt"><b><br></b></font></font><br>
+<td>
+<p><font size="1" style="font-size: 8pt"><b>Clause No./<br>
+Subclause No./<br>
+Annex<br></b>(e.g. 3.1)</font>
+<td>
+<p><font size="1" style="font-size: 8pt"><b>Paragraph/<br>
+Figure/Table/Note<br></b>(e.g. Table 1)</font>
+<td>
+<p><font size="2" style="font-size: 11pt"><font size="1" style=
+"font-size: 8pt"><b>Type of com-ment</b></font><sup><font size="1"
+style="font-size: 6pt"><b>2</b></font></sup></font>
+<td>
+<p><font size="1" style="font-size: 8pt"><b>Comment (justification
+for change) by the MB</b></font>
+<td>
+<p><font size="1" style="font-size: 8pt"><b>Proposed change by the
+MB</b></font>
+<td>
+<p lang="en-GB" align="center" style=
+"margin-top: 0.07in; margin-bottom: 0.04in; page-break-inside: avoid">
+<font size="1" style="font-size: 8pt"><b>Disposition</b></font>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">General Comment</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ge</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Interactions between several new features
+appear obscure, and very few examples are offered to guide
+understanding of the formal text on interaction between these new
+additions.</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">We worry about the complexity of the
+programming model so created.</font>
+<p style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">1-16</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ge/te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The active issues identified in WG21
+N2803, C++ Standard Core Language Active Issues, must be addressed
+and appropriate action taken.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+<font color="#000080" size="2" style="font-size: 11pt"><u><a href=
+"http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html"><font size="2"
+style=
+"font-size: 9pt">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html></a></u></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Appropriate action would include making
+changes to the CD, identifying an issue as not requiring a change
+to the CD, or deferring the issue to a later point in time.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">CA-1</font>
+<td>
+<p><br>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p><font size="2" style="font-size: 9pt">There are quite a number
+of defects for the current CD recorded in SC22/WG21-N2803 and
+N2806</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Consider these comments
+and update ISO/IEC CD 14882 accordingly</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1 through 16</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ge/te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-1 Consider addressing a
+significant part of the unresolved core language issues presented
+in WG21 document N2791 "C++ Standard Core Language Active Issues,
+Revision 59", available at
+
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2791.html
+.</font>
+<td>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">CH 2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">all</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The issues on the issues
+lists shall be addressed before the standard becomes final.</font>
+<td>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 3</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">all</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Latin abbreviations are
+presented incorrectly.</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Italicize all Latin
+abbreviations, append commas after each occurrence of <i>i.e</i>.
+and <i>e.g.</i>, and remove extraneous space after each such
+abbreviation.</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1 [intro.scope]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">C++ is split at the end of line.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 4</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">1.1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">There is a bad line break in "C++".</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK 1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">List of
+additional facilities over C has been extended with this standard,
+so should be mentioned in the introductory material.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add the
+following to the list in 1.1p2: atomic operations concurrency
+alignment control user-defined literals attributes</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.2 [intro.refs]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Is the lack of reference to ISO/CEI
+9899/AC3:2007 voluntary?</font>
+<td>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK 2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><span lang="en-US">We recommend taking
+the latest update to each listed standard, yet the C standard is
+quite deliberately held back to the 1990 version without
+comment.+</span></font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">... not sure
+...</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK 3</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">1.3.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The
+definition of an argument does not seem to cover many assumed use
+cases, and we believe that is not intentional.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Revise the definition of argument to answer
+question such as: Are lambda-captures arguments? Are type names in
+a throw-spec arguments? 'Argument' to casts, typeid, alignof,
+alignas, decltype and sizeof? why in x[arg] : arg is not an
+agrument, but the value forwarded to operator[]() is ? Does not
+apply to operators as call-points not bounded by parenthises ?
+Similar for copy initialization and conversion? what are Deduced
+template 'arguments'? what are 'default arguments'? can attributes
+have arguments? what about concepts, requires clauses and
+concept_map instantiations? What about user-defined literals where
+parens are not used?</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK 4</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">1.3.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">This
+definition is essentially worthless, as it says nothing about what
+distinguished a diagnostic message from other output messages
+provided by the implementation</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">... add something about the diagnostic message
+being a message issues by the implementation when translating a
+program that violates the rules of the standard. ...</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 5</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.3.4
+[defns.dynamic.type]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">"The dynamic type of an rvalue expression is
+its static type." Is this true with rvalue references?</font>
+<td>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 5</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.3.5</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The wording is unclear as
+to whether it is the input or the implementation "that is not a
+well-formed program".</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Reword to clarify that it
+is the input that is here considered not well-formed.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 6</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.3.6
+[defns.impl.defined]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">There is a page break between the title and the
+paragraph.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 7</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.3.13
+[defns.undefined]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">[intro.execution]/5 explicitly allows non
+causal undefined behaviour,</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Adding it to the note outlying possible
+undefined behaviours.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 6</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">1.3.14</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ge</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Unspecified behavior does not clearly
+state whether or not undefined behavior is permitted. (The standard
+says that "usually, the range of possible behaviors is delineated",
+but what happens if the range is not delineated? Is a crash, or
+worse, allowed?)</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Clearly state whether or not Unspecified behavior
+includes undefined behavior.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 8</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.4
+[intro.compliance]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">8</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">The paragraph as its stands seems to require
+that violations of the ODR (which make a program ill-formed) are
+required to be diagnosed if the program also uses an extension
+which defines some cases of ODR.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK 5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Missing
+checklist of implementation defined behaviour (see ISO/IEC TR
+10176, 4.1.1p6)</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Provide a new
+annex with the missing checklist</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK 6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Missing annex
+describing potential incompatibility to previous edition of the
+standard (see ISO/IEC TR 10176, 4.1.1p9)</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Provide a new
+annex with the missing documentation. See n2733(08-0243) for a
+starting point</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 7</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.5</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">There is no mention of
+Clause 17.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Include Clause 17 among
+the list of Clauses that specify the Standard Library.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 8</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.5</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">The paragraph omits to
+mention concepts and concept maps among its list of entities
+defined in the Standard Library.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Mention concepts and
+concept maps among the list of entities.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 9</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">1.6</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The syntax description does not account
+for lines that wrap.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 10</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">1.7</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">3</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">The term thread is used before defined.</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style="font-size: 9pt" color=
+"#000000">R</font><font size="2" style="font-size: 9pt">eference
+1.10 [intro.multithread].</font></font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 11</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.7</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 3 last sent.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The phrase &#8220;threads
+of execution&#8221; should be accompanied by a reference to
+[intro.multithread].</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Insert the recommended
+reference.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 12</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.7</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 3 first
+sent.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">A memory location is not
+an object as the sentence claims.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Clarify that a memory
+location &#8220;holds&#8221; an object rather than that it
+&#8220;is&#8221; an object.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 13</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.7</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 3 last sent.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">It is unclear what is
+meant by memory locations that are "separate": are they distinct?
+non-overlapping? how much "separation" is needed?</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Provide either a better
+definition of &#8220;separate&#8221; or reword (this and subsequent
+paragraphs) to avoid this term.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 14</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.7</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The phrase "no matter what
+the sizes of the intervening bit-fields happen to be" contradicts
+the claim of separation "by a zero-length bit-field
+declaration".</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Delete the &#8220;no
+matter&#8230;&#8221; phrase, or resolve the contradiction in a
+different way.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 15</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.7</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 5</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">A struct does not
+&#8220;contain&#8221; memory locations.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Reword so that a struct is
+&#8220;held in&#8221; one or more memory locations.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 16</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.9</font>
+<td>
+<p><br>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">The discussion of
+observable behavior in 1.9 is not consistent with the addition of
+threads to the language. Volatile reads and writes and other
+observable actions no longer occur in a single
+"sequence&#8221;.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Remove/replace various
+occurrences of "sequence" in 1.9.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK 8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1.9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">With parallel
+execution there is no longer the idea of a single execution
+sequence for a program. Instead, a program may be considered a set
+of exectution sequences.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Update first
+sentance as: A conforming implementation executing a well-formed
+program shall produce the same observable behavior as one of the
+possible SETS OF execution sequences of the corresponding instance
+of the abstract machine CONFORMING TO THE MEMORY MODEL (1.10) with
+the same program and the same input.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK 7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1.9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Does the term
+'sequence' imply all reads/writes through volatile memory much be
+serialized, and cannot occur in parallel on truly parallel
+hardware? Allow for multiple concurrent sequences where each
+sequence is constrained by this observable behaviour rule, and
+multiple sequences are constrained by the memory model and
+happens-before relationships defined in 1.10</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+'sequence' with 'sequences'.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 9</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.9
+[intro.execution]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">16</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">This example use int *v while the other
+examples seems to use notation like int* v.</font>
+<td>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 17</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1.10</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">This definition of &#8220;thread&#8221; is poor,
+and assumes the user already knows what multi-threaded means
+(probably true!). In particular, it does not deal adequately with
+the concept that all threads share the same address space.</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Replace first sentence of
+para 1 as follows:</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">Under a hosted implementation, a C++ program can
+have more than one thread of execution (a.k.a. thread) running
+concurrently. Each thread is a single flow of control within a
+program. Anything whose address may be determined by a thread,
+including but not limited to static objects, storage obtained via
+new or by any dynamic allocator, directly addressable storage
+obtained through implementation-defined functions, and automatic
+variables, are accessible to all threads in the same
+program.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK 9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2,
+4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Undefined
+behaviour is a drastic way to silently ignore minor issues. The
+cases in this paragraph could be easily defined. In this case opt
+for conditionally supported behaviour, which mandates a diagnostic
+if the compiler is not prepared to handle the syntax
+consistently.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Replace undefined behaviour with conditionally
+supported behavior. Conditional behaviour may be implementation
+defined, although suggest there is a reasonable default in each
+case. For creating a universal-character name, splice text to
+create a universal-character. In the case of a file ending without
+a newline, treat as if the newline was implictly added, with an
+empty line to follow if the last character was a back-slash.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK 10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Implementation defined seems unnecessarily
+burdensome for negligible gain. I am yet to see code that depended
+on whether non-empty sequences of whitespace were concatenated.
+Better left unspecified.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">How the
+compiler treats non-empty sequences of whitespace should be left
+unspecified, rather than implementation-defined.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 10</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2.1 [lex.phases]/5 and 2.2
+[lex.charset]/3</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">[defns.multibyte] "the extended character
+set."</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">[lex.charset]/3 cited below implies that
+there is an extended character set per locale.</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">[lex.phases]/5 "Each [...]
+universal-character-name [...] is converted to the corresponding
+member of the execution character set"</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">[lex.charset]/3 "The values of the members
+of the execution character sets are implementation defined, and any
+additional members are locale-specific."</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Together they seem to imply that what is
+locale-specific is if a value is valid or not for the current
+locale, not the representation of a given universal
+character.</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">This is not the behaviour of at least some
+compilers I've access to which are allowing different codes for the
+same abstract character in different locale. During phase 5, they
+are using an implementation defined char set.</font>
+<p style="margin-bottom: 0in"><br>
+<p><br>
+<td>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Trigraphs are
+a complicated solution to an old problem, that cause more problems
+than they solve in the modern environment. Unexpected trigraphs in
+string literals and occasionally in comments can be very confusing
+for the non-expert.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Deprecate the
+whole of 2.3 and move it to appendix D.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">12</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2.4,
+2.8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This undefined behaviour in token concatenation is
+worrying and we believe hard to justify. An implementation should
+either support this in a defined way, or issue a diagnosic.
+Documenting existing practice should not break existing
+implementations, although unconditionally requiring a diagnostic
+would lead to more portable programs.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+undefined behaviour with conditionally supported behaviour with
+implementation defined semantics.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 18</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2.4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The paragraph begins with
+an empty line.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Delete the empty
+line.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 11</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2.4 [lex.pptokens]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">There are spurious empty lines.</font>
+<td>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 12</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2.5 [lex.digraph] and 2.11
+[lex.key]/2</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">The alternative representations are reserved as
+such even in attribute. Is that what is wanted?</font>
+<td>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FI 2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2.5</font>
+<td>
+<p lang="fi-FI" style="margin-top: 0.04in"><font size="2" style=
+"font-size: 9pt">Table 2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Add eq, for spelling out
+== in order to distinguish it from the assignment operator.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">See eq-keyword.doc,
+eq-keyword.ppt</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">13</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2.9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">This text is
+confusing in isolation, as it implies pp-numbers do not have a
+value in translation phase 4 when evaluating #if preprocessor
+expressions.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a note
+with a cross-refernce to 16.1 that a pp-number may briefly acquire
+a value during translation phase 4 while evaluating #if
+expressions.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">14</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">2.11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">table
+3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The table is nearly sorted, but not quite. It was
+sorted in previous versions of the standard.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Sort the
+table.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2.11</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Table 3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Keywords in the table are
+listed disorderly. Also, a part of a frame of the table is not
+drawn.</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Sort it in alphabetical order. Complete the table
+frame.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 19</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2.13.1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Table 5, rows &#8220;l or
+L&#8221; and &#8220;ll or LL&#8221;</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The final entry in the
+last column (&#8220;unsigned long int&#8221;) is incorrect.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Replace the incorrect
+entries by &#8220;unsigned long long int&#8221;.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 20</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">2.13.1, 2.13.3</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Long strings of digits in literals are a
+continuing problem in the production and maintenance of
+programs.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">Adopt the 1983 technology of Ada and use
+underscores to separate digits.</font> <font color=
+"#000080"><u><a href=
+"http://www.google.com/url?sa=D&amp;q=http%3A%2F%2Fwww.open-std.org%2FJTC1%2FSC22%2FWG21%2Fdocs%2Fpapers%2F2007%2Fn2281.html"
+target="_blank"><font size="2" style=
+"font-size: 9pt">http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2281.html></a></u></font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">15</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">2.13.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Inconsistency
+between definition of a multicharacter literal and a wide character
+literal containing multiple c-chars.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Define the term multicharacter wide literal for a
+wchar_t literal containing multiple elements, and specify its type
+is integer (or wider)</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">16</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">2.13.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Not
+immediately clear why the question mark needs escaping. A note
+would help.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add a note explaining that the ? character may
+need escaping to avoid accidentally creating a trigraph.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">2.13.4</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 2</font><sup><font size="2" style=
+"font-size: 9pt">nd</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Typo, R"..." should be R"[...]"</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Correct typo.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 3</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">2.13.4</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">2</font><sup><font size="2" style=
+"font-size: 9pt">nd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">We think that the
+explanation of d-char-sequence is not enough.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Add the following.</font>
+<ol>
+<li>
+<p lang="en-GB" align="left" style=
+"margin-bottom: 0in; widows: 0; orphans: 0"><font size="2" style=
+"font-size: 9pt">Add the following to the explanation of
+d-char-sequence, more easily to understand.</font></ol>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">...prefix is a raw string literal.</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The d-char-sequence is used as delimiter.</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The terminating d-char-sequence of ...</font>
+<ol start="2">
+<li>
+<p lang="en-GB" align="left" style=
+"margin-bottom: 0in; widows: 0; orphans: 0"><font size="2" style=
+"font-size: 9pt">Add the following note that there are square
+brackets in r-char-sequence.</font></ol>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">[Note:</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.83in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">char foo[] = R&#8221;<i>delimiter</i>[[a-z]
+specifies a range which matches any lowercase letter from "a" to
+"z".]<i>delimiter</i>&#8221;;</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">the expression statement behaves exactly the same
+as</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.83in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">char foo[]="[a-z] specifies a range which matches
+any lowercase letter from \"a\" to \"z\".";</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.69in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">- end note]</font>
+<p lang="en-GB" align="left" style="text-indent: 0.69in"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 4</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">2.13.4</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">3</font><sup><font size="2" style=
+"font-size: 9pt">rd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 1st line of example</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo. Lack of a necessary backslash in
+the first line of the example as follows:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const char *p = R"[a</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">b</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">c]";</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const char *p = R"[a\</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">b</font>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">c]";</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Correct typo.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 21</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2.13.4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The paragraph, marked as a
+Note, contains an embedded example not marked as such.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Denote the code (and
+perhaps also its commentary) as an Example.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 22</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2.13.4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The code does not have the
+effect predicted by its accompanying narrative.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Append a backslash to the
+first line of the code.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 5</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">2.13.4</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">11</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, Table 7</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">It is not explicit how to
+combine raw-string and non-raw-string.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Add rules containing
+raw-string in the table 7.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 13</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2.13.4 [lex.string]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Shouldn't the assert be</font>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">assert(std::strcmp(p, "a\nb\nc") == 0);</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">17</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">2.13.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It would be preferred for attempts to modify
+string literals to be diagnosable errors. This is not possible due
+to the deprecated implicit conversion to pointer to null-terminated
+character sequence of non-const characters. If this deprecated
+conversion were remove (see other comments) then string literals
+are always accessed through const types, and the compiler can
+enforce the no modification rule. The only exception would be using
+const_cast to cast away constness, but this is already covered
+under the const_cast rules so needs no further detail here.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">(asssuming
+deprecated conversion to non-const array is removed or can be
+turned off) Strike the sentence on undefined behaviour.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">18</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">2.13.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The addition of static_assert (7p4) to the
+language raises the need to concatenate string representations of
+integral constant expressions (typically from a sizeof or alignof
+expression) with narrow string literals to provide an informative
+error message. There is no need to support arbitrary constant
+expressions and especially not floating point values or formatting
+flags. Likewise, the need is purely to support static_assert so
+only narrow string literal support is required, although
+generalizing to other literal types would be useful.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Define a
+syntax to support string-ization of integral constant expressions
+in a form eligible for string literal concatenation, 2.13.4p6.
+Suggested syntax: I" integral-constant-expression ". There is no
+raw variant, although it could combine with type specifier in the
+same way that the R prefix does, supporting u8I, uI, UI and
+LI.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">19</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">2.13.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The grammar
+for string literal is becoming unwieldy and could easily be
+refactored into the type optional specifier and the string
+contents.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Refactor string-literal grammar as: (note -
+current Drupal view loses formatting which is vital to clearly read
+the grammar) string-literal: string-literal-type-specifierOPT
+string-literal-body string-literal-type-specifier: one of u8 u U L
+string-literal-body: " s-char-sequenceOPT " R raw-string</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 14</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3 [basic]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">7</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">"In general it is necessary to determine
+whether a name denotes one of these entities before parsing the
+program that contains it."</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Would prefer</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">"... before continuing to parse the
+program that contains it."</font>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">or even</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">"... to complete the parsing of the
+program that contains it."</font>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">as some names denotes entities declared after
+the first occurrence.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 15</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3 [basic]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">8</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">/operator-function-id/,
+/conversion-function-id/, /template-id/ are followed by a space and
+then a "s" while usually such production names aren't followed by a
+space when put in plural (see /identifier/).</font>
+<p><br>
+<td>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">20</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Chapter 3 ("Basic concepts") provides common
+definitions used in the rest of the document. Now that we have
+concepts as a primary feature, the title of this chapter can be
+confusing as it does not refer to the language feature but to
+definitions used in the document.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change the
+title to "Basic definitions".</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">21</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Concepts is
+now the name of a specific feature of the language, the term now
+risks confusion and ambiguity when used in the more general
+sense.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Rename the
+chapter Basic ???. THe note in p2 specifically needs similar
+rewording</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">22</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">References are frequently considered variables,
+but this definition only applies to objects.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add "or
+reference" after both uses of "object"</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">23</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">alias-declarations are not definitions and should
+be added to the list</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+alias-declaration after typedef declaration.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">24</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The current words suggest the declaration of a
+static integral constant data member of a class cannot be a
+definition. Trying to fix this wording in-place will be verbose and
+risk raising more confusion than it solves, so suggest a footnote
+to call out the special case</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a
+footnote attached to the static data membmer rule: *static data
+member delcarations of intergral type may also be definitions if a
+constant integral expression is provided for an initializer.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">25</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Example is misleading as implicitly defined
+default constructor uses default initialization, not value
+initialization, for non-static data members. In the case of
+std::String this makes no difference, but it makes a big difference
+for fundamental types and pointers.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove the :
+s() from the illustrated default constructor: struct C {
+std::string s; C() { } C(const C&amp; x): s(x.s) { } C&amp;
+operator=(const C&amp; x) { s = x.s; return *this; } ~C() { }
+};</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">26</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">THe one definition rule should cover references,
+and unless the term 'variable' is extended to cover references the
+list in this paragraph is incomplete.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Either
+include references in the definition of 'variable' (see earlier
+comment) or add reference to the list in this paragraph.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">27</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">A class type must be complete when catching
+exceptions, even by reference or pointer. See 15.3.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add "when
+used in an exception-handler (15.3)" to the list.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 16</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3.3 [Declarative regions
+and scopes.]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">The scope of function parameters is
+defined, but what is the scope of template parameters?</font>
+<p><br>
+<td>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">28</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">3.3.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Class templates are not classes, so we should
+include this case.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">ammend
+"class" to "class or class template"</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK</font>
+<p><font size="2" style="font-size: 9pt">29</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">3.3.10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">operators and
+conversion functions do not have names, yet are susceptible to
+'name hiding' within a class - indeed we rely on this for the
+implicitly declared copy-assignment operator.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add the additional phrase "The declaration of an
+operator or conversion function in a derived class (Clause 10)
+hides the declaration of an operator or conversion function of a
+base class of the same operator or type;"</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 17</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3.5 [Program and
+linkage]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">This section does not specify whether
+concept names have linkage.</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Do they or not? If concept names do not
+have linkage, then a note is appropriate, and that would be a bit
+surprising and curious. What is the rationale?</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+30</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">This
+paragraph implies concepts have no linkage (do they need it?) and
+that the entities behind names without linkage cannot be used in
+other scopes. This maybe a bigger problem for concept maps?</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a note to
+clarify that concepts don't need linkage.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+31</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">What is the
+linkage of names declared inside a namespace, in turn declared
+inside an anonymous namespace? It is not clear why such a namespace
+has no linkage, and there is no language suggesting its memmbers
+should lose linkage with it, which we assume is the intended
+consequence.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Clarify rules
+for namespaces inside nested namespaces, or remove the
+restriction.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 23</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">3.5</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">6</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Bad paragraph break.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 18</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3.5 [basic.link]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">The paragraph number is not aligned with the
+text.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 19</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3.6 [Start and
+termination]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">This section completely ignores the real
+world and practical case of dynamically linked or loaded libraries.
+In current computing environments, they are ubiquitous and they
+cannot be ignored in</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">practical C++ programs. The
+Standard</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">should address this aspect.</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+32</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">3.6.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Do we really
+want to allow: constexpr int main() { return 0; } as a valid
+program?</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add constexpr to the list of ill-formed things to
+annotate main</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 24</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">3.6.1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">4</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">std::quick_exit is not referenced.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">Reference std::quick_exit as well as std::exit in
+saying that automatic objects are not destroyed. It should</font>
+<strong><font size="2" style="font-size: 9pt">not</font></strong>
+<font size="2" style="font-size: 9pt">do so in saying that calling
+std::quick_exit is undefined from within destructors for static or
+thread duration objects.</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 25</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3.6.3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 2 last sent.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The parenthesized phrase,
+introduced via &#8220;i.e.&#8221; is in the nature of an
+example.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Change &#8220;i.e.&#8221;
+to &#8220;e.g.&#8221;</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 6</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">3.7.4.1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">4</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 4</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Lack of a comma right after
+&#8220;(3.7.2)&#8221; in the sentence while there are commas after
+any other recitations like &#8220;(3.7.1)&#8221;. It is just a
+unification matter.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">[ Note: in particular, a global
+allocation function is not called to allocate storage for objects
+with static storage duration (3.7.1), for objects or references
+with thread storage duration (3.7.2) for objects of type
+std::type_info (5.2.8), or for the copy of an object thrown by a
+throw expression (15.1). -end note ]</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.13in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">[ Note: in particular, a global
+allocation function is not called to allocate storage for objects
+with static storage duration (3.7.1), for objects or references
+with thread storage duration (3.7.2), for objects of type
+std::type_info (5.2.8), or for the copy of an object thrown by a
+throw expression (15.1). -end note ]</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Correct typo.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3.7.4.3</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">DE-3 It is unclear whether
+the following code has well-defined behavior; none of the bullets
+in the second paragraph seem to apply.</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">int&amp; i = *new
+int(5);</font>
+<p lang="en-GB" align="left"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">delete &amp;i;</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Clarify that &amp;i is
+considered a safely-derived pointer value.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 26</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">3.8</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">1 and 5</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Use of object fields during destruction is
+excessively and erroneously constrained.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">See the attached document "Issues with
+the C++ Standard" under Chapter 3 "Use of objects, especially from
+other threads, during destruction".</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 27</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3.9</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 9 first
+sent.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">There is a
+superfluous/extraneous &#8220;and&#8221;.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Delete &#8220;and&#8221;
+from the phrase &#8220;and std::nullptr_t&#8221;.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 20</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3.9 [Types]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">The phrase 'effective type' is defined and
+used in a way that is incompatible with C99. Such a deliberate
+incompatible choice of terminology is both unfortunate and
+confusing, given past practice of the committee to maintain greater
+compatibility with C99. We strongly suggest that the phrase
+'effective type' not be used in such an incompatible way.</font>
+<p><br>
+<td>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 7</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">3.9.2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">3</font><sup><font size="2" style=
+"font-size: 9pt">rd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 13</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">over-aligned type was
+added as new notion. So it is preferable to add the link after
+that.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Add (3.11) after over-aligned type as
+the link.</font>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style="font-size: 9pt">[ Note:
+pointers to over-aligned types</font><font size="2" style=
+"font-size: 9pt" color="#008000">(3.11)</font> <font size="2"
+style="font-size: 9pt">have no special representation, but their
+range of valid values is restricted by the extended alignment
+requirement. This International Standard specifies only two ways of
+obtaining such a pointer: taking the address of a valid object with
+an over-aligned type</font><font size="2" style="font-size: 9pt"
+color="#008000">(3.11)</font><font size="2" style=
+"font-size: 9pt">, and using one of the runtime pointer alignment
+functions. An implementation may provide other means of obtaining a
+valid pointer value for an over-aligned type</font><font size="2"
+style="font-size: 9pt" color="#008000">(3.11)</font><font size="2"
+style="font-size: 9pt">.&#8212;end note ]</font></font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 28</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3.9.3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 5 first
+sent.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">The closing braces of the
+first two sets are preceded by extraneous space.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Delete the extra
+spaces.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE 4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">4.2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">p2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-4 The deprecated
+conversion from string literals to pointer to non-const character
+types should be limited to those conversions and types of string
+literals that were already present in ISO/IEC 14882:2003, or the
+deprecated conversions should be removed entirely.</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Consider applying the
+proposed resolution presented in core issue 693 in WG21 document
+N2714 &#8220;C++ Standard Core Language Active Issues, Revision
+58&#8220;, available at
+
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2714.html
+; or remove only the conversions to "pointer to char16_t", "pointer
+to char32_t" in 4.2 paragraph 2 and 15.1 paragraph 3.</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">CH 1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">4.9 and 5.2.9</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">With respect to the target
+type, pointer to members should behave like normal pointers (least
+surprise principle).</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">The standard should allow
+implicit conversions from ``pointer to member of <tt><font face=
+"Arial, sans-serif">T</font></tt> of type <i>cv</i> <tt><font face=
+"Arial, sans-serif">D</font></tt>'' to ``pointer to member of
+<tt><font face="Arial, sans-serif">T</font></tt> of type <i>cv</i>
+B'', where D is of class type and B is a public base of D, It
+should allow explicit conversion the other way around.</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-5</font>
+<td>
+<p><font size="2" style="font-size: 9pt">4.11, 5.3.1, 5.5</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-5 Ref-qualification has
+not been integrated with pointer-to-members.</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Review implicit conversions
+(4.11), forming pointer-to-members (5.3.1), and dereferencing
+pointer-to-members (5.5) for type-safety concerns in the presence
+of ref-qualifiers on the member.</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+33</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">4.13</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">We have: "No
+two signed integer types shall have the same rank ..." "the rank of
+char shall equal the rank of signed char" Can we therefore deduce
+that char may not be signed?</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Replace the first sentence with "No two signed
+integer types shall have the same rank, even if they have the same
+representation, except that signed char shall have the same rank as
+char even if char is signed (3.9.1/1)."</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+34</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">4.13</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">6th bullet, "the rank of char" - first letter
+should be capitalised for consistency with the other bullets</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The rank of
+char</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+36</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Primary expressions are literals, names, names
+qualified by the scope resolution operator ::, and lambda
+expressions. The immediately following grammar flatly contradicts
+this - this and (e) are also lambda expressions.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Delete this
+paragraph.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+37</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Member function templates are not member
+functions, so should also be listed in the 3rd bullet</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add member
+function templates to the 3rd bullet</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+38</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">this might be
+useful in a few more places than it is permitted, specifically in
+decltype expressions within a class. Two examples that would be
+ill-formed at class scope without changes: typedef decltype( *this
+) this_type; decltype( [this]{ return this-&gt;memfun(); } )
+my_lambda;</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">... words to
+follow ...</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 8</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">5.1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">7</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, Syntax rules</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">In the current syntax definition, a
+scope operator(::) cannot be applied to decltype, but it should be.
+It would be useful in the case to obtain member type(nested-type)
+from an instance as follows:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">vector&lt;int&gt; v;</font>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">decltype(v)::value_type i = 0; // int i =
+0;</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Add &#8220;decltype ( expression ) ::
+&#8220; to nested-name-specifier syntax like below.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">nested-name-specifier:</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.13in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">type-name ::</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.13in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">namespace-name ::</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.13in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">nested-name-specifier identifier ::</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.13in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">nested-name-specifier templateopt
+simple-template-id ::</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.13in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">nested-name-specifieropt concept-id ::</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.13in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">decltype ( expression ) ::</font>
+<p lang="en-GB" align="left" style="text-indent: 0.13in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 9</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">It would be preferable that
+&#8220;&amp;&amp;&#8221; could be specified in a lambda expression
+to declare move capture.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Here is an example from N2709.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;typename F&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::unique_future&lt;typename
+std::result_of&lt;F()&gt;::type&gt; spawn_task(F f){</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename
+std::result_of&lt;F()&gt;::type result_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">struct local_task {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::promise&lt;result_type&gt;
+promise;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">F func;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">local_task(local_task const&amp;
+other)=delete;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">local_task(F func_):</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">func(func_)</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">local_task(local_task&amp;&amp;
+other):</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">promise(std::move(other.promise)),</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">f(std::move(other.f))</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void operator() {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">try</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">promise.set_value(f());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">catch(...)</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">promise.set_exception(std::current_exception());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">};</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">local_task task(std::move(f));</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::unique_future&lt;result_type&gt;
+res(task.promise.get_future());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::thread(std::move(task));</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">return res;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">This can be rewritten simply as follows
+if move capture can be used in a lambda expression.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;typename F&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::unique_future&lt;typename
+std::result_of&lt;F()&gt;::type&gt; spawn_task(F f){</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename
+std::result_of&lt;F()&gt;::type result_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::promise&lt;result_type&gt;
+promise;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::unique_future&lt;result_type&gt;
+res(promise.get_future());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::thread([&amp;&amp;promise,
+&amp;&amp;f]() {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">try</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">promise.set_value(f());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">catch(...)</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">promise.set_exception(std::current_exception());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">});</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">return res;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Add move capture in a lambda
+expression.</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 10</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">In the current syntax definition, a
+returned type of a function object cannot be obtained by using
+result_of from an unnamed function object generated by a lambda
+expression because it doesn&#8217;t have result type.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class F&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void foo(F f)</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef std::result_of&lt;F()&gt;::type
+result; // error</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">foo([]{});</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"margin-left: 0in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">If &#8220;Callable&#8221; or
+&#8220;Predicate&#8221; concept is specified, a returned type can
+be obtained from a function object without result_type. But it is
+preferable to be able to obtain it with template.</font>
+<p lang="en-GB" align="left" style="margin-left: 0in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Add result_type to the syntax of an
+unnamed function object generated by a lambda expression.</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 29</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The standard does not state whether or
+not direct recursion of lambdas is possible.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 30</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style="font-size: 9pt"
+color="#000000">The standard does not clarify the meaning of</font>
+<code><font face="Arial, sans-serif" color="#000000"><font size="2"
+style="font-size: 9pt">this</font></font></code> <font size="2"
+style="font-size: 9pt" color="#000000">in lambdas. Does it mean
+this lambda, or this class within which the lambda is
+nested?</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 31</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style="font-size: 9pt"
+color="#000000">The current wording does not specify how context
+capturing and name resolution</font> <font size="2" style=
+"font-size: 9pt">take place when the inner lambda refers to the
+outer lambda's locals variables and parameters.</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+45</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">para
+2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Lambda is a
+language feature with an apparent dependency on &lt;functional&gt;.
+This increases dependency of language on library, and is
+inconsistent with the definition of freestanding in
+17.6.2.4.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Change the text "a closure object behaves as a
+function object" to "a closure object is a built-in object which
+behaves as a function object"; and after "context.", insert " A
+closure object may be used without any need for
+&lt;functional&gt;." This makes clear what may already be implied,
+namely that lambdas can be used in freestanding implementations and
+don't increase dependency of language on library. (Marked as
+technical comment anyway because this clarity is technically
+important).</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">US 32</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">3</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The final italic "this" in the paragraph
+should be a teletype "this".</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+39</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">This
+paragraph lists all the special member functions for the class
+representing a lambda. But it omits the destructor, which is
+awkward.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add "F has an
+implicitly-declared destructor".</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+40</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">12</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">If one or more names in the effective capture set
+are preceded by &amp;, the effect of invoking a closure object or a
+copy after the innermost block scope of the context of the lambda
+expression has been exited is undefined. That is too restrictive.
+The behaviour should be undefined iff the lifetime of any of the
+variables referenced has ended. This should be safe and legal;
+currently it has undefined behaviour: int i;
+reference_closure&lt;void ()&gt; f; if (blah) { f = [&amp;i]() { };
+} if (f) f();</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">If one or
+more names in the effective capture set are preceded by &amp;, the
+effect of invoking a closure object or a copy after the lifetime of
+any of the variables referenced has ended is undefined.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+41</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">12</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">For argument
+dependant lookup (3.4.2) the associated namespaces for a class
+include its bases, and associated namespaces of its bases.
+Requiring the result of a lambda expression *to dervide from*
+std::reference_closure means that ADL will look in namespace std
+when the lambda capture is entirely by reference, which might have
+surprising results. Also, relying on the idea of implicitly slicing
+objects is uncomfortable.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+inheritance with implicit conversion.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+42</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">A lambda with
+an empty capture list has identical semantics to a regular function
+type. By requiring this mapping we get an efficient lambda type
+with a known API that is also compatible with existing operating
+system and C library functions.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add a new paragraph: "A lambda expression with an
+empty capture set shall be convertible to pointer to function type
+R(P), where R is the return type and P is the parameter-type-list
+of the lambda expression." Additionally it might be good to (a)
+allow conversion to function reference (b) allow extern "C"
+function pointer types</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+43</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">12</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The note spells out the intent that objects from
+lambda-expressions with an effective capture list of references
+should be implemented as a pair of pointers. However, nothing in
+the rest of 5.1.1 lifts the requirement of to declare a reference
+member for each captured name, and a non-normative note is not
+enough to relax that.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">... provvide
+exceptions in the right places ...</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+44</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">12</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">There is a strong similarity between a [&amp;]{}
+lambda capturing a stack frame, and a [this]{} lambda binding a
+member function to a class instance. The reference_closure
+requirement should be extended to the second case, although we need
+some syntax to create such an object that is distinct from the
+existing pointer-to-member syntax. This would be a cleaner
+alternative to the new std::mem_fn library component.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Extend
+reference_closure requirement to cover [this] lambdas. Consider a
+simple syntax for creating such bound expressions.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+46</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">para
+12</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The
+requirement that a lambda meeting appropriate conditions be an
+object derived from reference_closure makes lambda the language
+feature dependent on &lt;functional&gt;, which increases dependency
+of the language on the library and bloats the definition of
+freestanding C++.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Replace text "is publicly derived from" with
+"shall be implemented in a manner indistinguishable from". This
+places an ABI constraint on reference closures such that compiler
+and library implementer have to do compatible things. But it cuts
+the dependency of lambda syntax on &lt;functional&gt;.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-6</font>
+<td>
+<p><font size="2" style="font-size: 9pt">5.1.1, 20.7.18</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-6 Some uses of lambda
+expressions refer to specializations of the unconstrained class
+template <font face=
+"Arial, sans-serif">std::reference_closure</font> (5.1.1). If the
+lambda expression appears in a constrained context and the return
+type or a parameter type for the lambda depend on a template
+parameter (see 14.10), such a use is ill-formed.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">In 20.7.18, for the class
+template <font face=
+"Arial, sans-serif">std::reference_closure</font>, require
+<font face="Arial, sans-serif">Returnable</font> for <font face=
+"Arial, sans-serif">R</font> and <font face=
+"Arial, sans-serif">VariableType</font> for each of the <font face=
+"Arial, sans-serif">ArgTypes</font>.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-7</font>
+<td>
+<p><font size="2" style="font-size: 9pt">5.1.1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">p10</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-7 The note at the end
+of paragraph 10 appears to be garbled.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Remove "or references" in
+the note.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-8</font>
+<td>
+<p><font size="2" style="font-size: 9pt">5.1.1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">p10</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-8 The construction of
+the function call operator signature is missing specifications for
+the ref-qualifier and the attribute-specifier.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Add bullets that say that
+the ref-qualifier and the attribute-specifier are absent.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 33</font>
+<td>
+<p><font size="2" style="font-size: 9pt">5.1.1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">11</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p><font size="2" style="font-size: 9pt">There is no definition of
+&#8220;move constructor&#8221; or &#8220;move
+operation&#8221;</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Since this is the first place
+the terms are used, a definition should either be added here, or a
+cross reference to one.</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-9</font>
+<td>
+<p><font size="2" style="font-size: 9pt">5.1.1</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-9 There is not a single
+example of a lambda-expression in the standard. See also core issue
+720 in WG21 document N2791 "C++ Standard Core Language Active
+Issues, Revision 59", available at
+http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2791.html
+.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Add a few well-chosen
+examples.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+52</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">This
+paragraph seens out of place, assignment expressions are covered in
+5.17</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move p3 to
+subsection 5.17</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+53</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The
+definition in p1 makes no allowance for overloaded operator[] that
+treats the expression as a simple function call, and does not
+support the interchangability of arguments. Howver p2 relies on
+this definition when describing the use of brace-init-lists inside
+[].</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Insert a new
+p2 describing the changed semantics for overloaded operator[]. This
+should be a note to avoid introducing normative text that could
+potentially conflict with the later definiton of these
+semantics.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+59</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">When there is
+no parameter for a given argument, the argument is passed in such a
+way that the receiving function can obtain the value of the
+argument by invoking va_arg. That shouldn't apply to parameter
+packs. template &lt;class ... Types&gt; void f(Types ... pack);
+f(1, 2, 3);</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Clarify that
+this sentence only applies where the ellipsis is used.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+60</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">In the
+remainder of 5.2.5, cq represents either const or the absence of
+const vq represents either volatile or the absence of
+volatile.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add "and"
+before vq</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+61</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">p1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Together with
+footnote 60 there may be confusion that the postfix expression is
+always evaluated - even when part of an unevaluated operand. We
+believe the standard does not require this, and a comment in the
+existing note would be a useful clarification.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Clarify in
+footnote 60 that this will not happen if the whole expression is an
+unevaluated operand.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+62</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">In the final
+bullet, what does 'not an lvalue' mean? Does it imply rvalue, or
+are there other possible meanings? Should clauses that trigger on
+rvalues pick up on this?</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace 'not
+an lvalue' with 'is an rvalue'.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-10</font>
+<td>
+<p><font size="2" style="font-size: 9pt">5.2.5</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-10 If E1.E2 is
+referring to a non-static member function, the potential
+ref-qualification on E2 should be taken into account.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Adjust the presentation of
+the types involved as appropriate.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+63</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Paragraph 2
+is missing its number.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+one.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+64</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">A new name R
+is introduced for use in paragraphs 3 and 4. But R is the same as
+T.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Replace R with T and replace "the required result
+type (which, for convenience, will be called R in this
+description)" with "T".</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+65</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">In the first two bullets we have "the result is a
+pointer (an lvalue referring) to". But para 2 makes clear that a
+dynamic_cast of an rvalue references produces a rvalue. (Can an
+lvalue refer to anything anyway?)</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace "an
+lvalue referring to" with "reference", twice.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+66</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">typeid may return "an implementation-defined class
+derived from std :: type_info". The derivation must be
+public.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">an
+implementation-defined class publicly derived from std ::
+type_info</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+67</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1, 2,
+3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Paragraph 1
+specifies when the result of static_cast is an lvalue; repeating it
+is unnecessary.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">In para 2, delete "It is an lvalue if the type
+cast to is an lvalue reference; otherwise, it is an rvalue." and
+"The result is an rvalue.". In para 3, delete "The result is an
+lvalue if T is an lvalue reference type (8.3.2), and an rvalue
+otherwise."</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+54</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3,
+6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Para 3: "The
+mapping performed by reinterpret_cast is implementation-defined.".
+Para 6: "... the result of such a pointer conversion is
+unspecified." Which is it?</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">In para 6, replace unspecified with
+implementation-defined. Alternatively, delete paragraph 3, since
+individual cases are labelled appropriately.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+55</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">dynamic_cast
+and reinterpret_cast crossreference 5.2.11 without creating an
+extra note. The second half of the note is unrelated to the
+crossrefernce, and would serve as well in normative text.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Strike the note about definition of casting away
+constness, preserve the cross-reference. The second sentance on
+reintrepret_cast to its own type should move out of the note into
+the normative text.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+56</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The notion of safely derived pointers means this
+conversion may not be as safe in the revised standard as the
+original. It would be good to call attention to the changed
+semantics with a note.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add: [Note:
+the result of such a conversion will not be a safely-derived
+pointer value (3.7.4.3) -- end note]</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+57</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Conditionally
+supported behaviour gives a wide range or permission, so clarify
+relationship between safely-derived object pointers and function
+pointers in a note.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add: [Note:
+In such cases, the implementation shall also define whether a
+safely-derived object pointer cast to a function pointer can be
+safely cast back -- end note]</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+58</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.2.11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Casting from an lvalue of type T1 to an lvalue of
+type T2 using a reference cast casts away constness if a cast from
+an rvalue of type &#8220;pointer to T1&#8221; to the type
+&#8220;pointer to T2&#8221; casts away constness. That doesn't
+cover rvalue references.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+lvalue with "lvalue or rvalue" twice.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">US 34</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">5.3</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">The list of unary operator should be in teletype
+font.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+68</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.3.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2-9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">All the unary
+operands other than * return rvalues - but this is not
+stated.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add a paragraph 1a "The following unary operators
+all produce results that are rvalues."</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+69</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.3.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">If we cannot bind references/take address of
+functions in concept_maps, does that mean we cannot use generic
+bind in constrained templates? Launch threads with expressions
+found via concept map lookup? Hit problems creating std::function
+objects? Does the problem only occur if we use qualified lookup to
+explicitly name a concept map? Does it only kick in if we rely on
+the implicit function implementation provided by a concept_map, so
+some types will work and others won't for the same
+algorithm?!</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">... unknown
+...</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+70</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.3.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The sizeof operator shall not be applied to ... an
+enumeration type before all its enumerators have been declared We
+should allow enum E : int; sizeof(E).</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change "an
+enumeration type" to "an enumeration type whose underlying type is
+not fixed".</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+71</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.3.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The type of
+an allocated object wih the type specifier auto is determined by
+the rules of copy initialization, but the initialization applied
+will be direct initialization. This would affect classes which
+declare their copy constructor explicit, for instance. For
+consistency, use the same form of initiailization for the deduction
+as the new expression.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace T x =
+e; with T x(e);</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+72</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.3.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The library headers have been carefully structured
+to limit the dependencies between core language and specific
+headers. The exception thrown should be catchable by a handler for
+a type lised in &lt;exception&gt; header in cluase 18. This might
+be accomplished by moving length_error into the &lt;exception&gt;
+header, but its dependency on logic_error with its std::string
+constructors suggest this is not a good idea. Prefer to pick an
+existing exception instead.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Throw
+std::bad_alloc instead of std::length_error.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+73</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.3.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">A class type with conversion operator can only be
+used if the conversion type is constexpr and the class is a literal
+type. Adding the single word 'literal' before class type will
+clarify this.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add 'literal'
+before 'class type'</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+74</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.3.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">operators, like constructors and destructors, do
+not have names. However, in certain circumstances they can be
+treated as if they had a name, but usually the stanadard is very
+clear not to actually describe their name as a distinct
+property.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change "the
+allocation function&#8217;s name is operator new" to "the
+allocation function is named operator new" and similarly for
+operator delete.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+35</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.3.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Missing
+period in middle of paragraph between "in the scope of T" and "If
+this lookup fails"</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add a period between "in the scope of T" and "If
+this lookup fails"</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+75</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.3.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">A paragraph strarting with [Note... is easily
+skipped when reading, missing the normative text at the end.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Swap order of
+the note and normative text.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 21</font>
+<td>
+<p><font size="2" style="font-size: 9pt">5.3.6 [Alignof</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Should not the type of alignof-expression be of
+type std::max_align_t?</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 35</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">5.8</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">2 and 3</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">There is curious spacing in the
+expressions "E1 &lt;&lt;E2" and "E1 &gt;&gt;E2". This is a
+formatting change since previous versions of the Standard.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+47</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5.14 /
+5.15</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Why are the descriptions of order of evaluation of
+expressions and side effects different between &amp;&amp; and ||
+operators. The interaction with the memory model should be
+identical, so identical words should be used to avoid accidential
+inconsistencies in interpretation.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Pick one form
+of wording as 'the best' and apply it in both places.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+48</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.18</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The defining feature of the comma operator is the
+guaranteed sequencing of two expressions. This guarantee is lost
+when presented with an overloaded operator, and this change is
+subtle enough to call attention to it.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add: [Note:
+There are no guarantees on the order of value computation for an
+overloaded comma operator -- end note]</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+49</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.19</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Is an
+implementation permitted to reject this? constexpr int f() { return
+f(); } int a[f()]; AFAICT it is well-formed; f() seems to satisfy
+all the rules to make it a constant expression. I would hate
+compilation to become a potentially non-terminating
+experience.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add an escape clause to allow the implementation
+to reject excessively deep nesting of constexpr function
+evaluations. (This can possibly be a note, since it is arguable
+that this point is handled by the general rule on resource limits
+in 1.4/2. A sufficiently smart compiler could use tail recursion
+above, meaning that it would never run out of memory given this
+program though.)</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+50</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.19</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The following
+should be valid: enum E { foo = 4}; const E c = foo; int a[c]; But
+currently it is not - c is not an lvalue of effective integral type
+(4th bullet). (See also 7.1.6.1/2)</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Change "effective integral type" to "effective
+integral or enumeration type" in the 4th bullet, 1st
+sub-bullet.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+51</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">5.19</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">typeid expressions can never be constant, whether
+or not the operand is a polymorphic class type. The result of the
+expression is a reference, and the typeinfo class that the
+reference refers to is polymorphic, with a virtual destructor - it
+can never be a literal type.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike the
+words "whose operand is of a polymorphic class type" on the bullet
+for typeid expressions.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+76</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Do we really
+need two different terms that say the same thing?</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Pick either 'block' or 'compound statement' as the
+preferred term and use it consistently throughout the
+standard.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 22</font>
+<td>
+<p><font size="2" style="font-size: 9pt">6.4.2 [The switch
+statement]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">The constant-expression in</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">case constant-expression</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">should be allowed to be of any constant
+expression of literal type for which a constexpr comparison
+operator (operator&lt; and operator==) is in scope. Now that
+constant expressions of other integral types are evaluated at
+compile time, the restriction for case-labels is at best
+artificial.</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+77</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The terms i/o operation, synchronize operation and
+atomic operation have very specific meanings within the standard.
+The paragraph would be much easier to understand with the terms
+crossreferenced.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Profide a
+cross-reference for the terms: i/o operation, synchronize operation
+and atomic operation</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 11</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">6.5.4</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 5</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">There is no _RangeT type
+in the equivalent code to &#8220;range-base for&#8221; statement.
+It existed in N2049.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Add a typedef for _RangeT in the example
+as follows:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp; <font size="2" style="font-size: 9pt"><u>typedef
+decltype( expression ) _RangeT;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp; <font size="2" style="font-size: 9pt">auto
+&amp;&amp; __range = ( expression );</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp; <font size="2" style="font-size: 9pt">for ( auto
+__begin = std::Range&lt;_RangeT&gt;:: begin(__range),</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
+<font size="2" style="font-size: 9pt">__end =
+std::Range&lt;_RangeT&gt;:: end(__range);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font size=
+"2" style="font-size: 9pt">__begin != __end;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font size=
+"2" style="font-size: 9pt">++__begin )</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp; <font size="2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font size="2" style=
+"font-size: 9pt">for-range-declaration = *__begin;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font size="2" style=
+"font-size: 9pt">statement</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp; <font size="2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+78</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">6.5.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Including the
+header &lt;iterator_concepts&gt; is far too unwieldy to enable an
+important and (expected to be) frequently used syntax.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Merge &lt;iterator_concepts&gt; into
+&lt;concepts&gt; and change 6.5.4p2 to refer to &lt;concepts&gt;,
+or make the Range concept fundamental along with the other support
+concepts in 14.9.4 and strike any reference to including a
+header.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+79</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">6.5.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The definition of for (for-range-declaration :
+expression) statement is expanded in terms which require a Range
+concept, and the program is ill-formed if &lt;iterator_concepts&gt;
+isn't included. For users, iterating through old-fashioned arrays,
+this is a sledge-hammer to crack a nut and compares poorly with
+other languages. It's also not possible to implement this without
+adversely impacting the freestanding definition in 17.6.2.4.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">When
+expression is an array a of length N whose length is known at
+compile time, expand range-for as 'for (... p=a, p!=a+N, p++) ...'
+without requiring the Range concept or &lt;iterator_concepts&gt;.
+Also, when expression is an initializer_list, expand range-for
+similarly without requiring &lt;iterator_concepts&gt;.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-11</font>
+<td>
+<p><font size="2" style="font-size: 9pt">6.9</font>
+<td>
+<p><font size="2" style="font-size: 9pt">p1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">DE-11 A sentence in paragraph
+1 reads: "Outside of a constrained context, the late-checked block
+has no effect." This, at face value, specifies that the
+<em>compound-statement</em> of such a late-checked block is never
+executed, which appears to be unintended.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">State that such a
+late-checked block has the same meaning as if the <font face=
+"Arial, sans-serif">late_check</font> keyword were absent.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+80</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Many of the sections and major subsections open
+with a sentence summarising the content. I'm not sure this is
+necessary; this isn't a tutorial. The problem with these summaries
+is that because they omit much of the detail, they tend to be
+inaccurate. This may not matter, but I feel the document would be
+improved by omitting them. There's a prime example here:
+"Declarations specify how names are to be interpreted." Not true
+for static_assert, an asm declaration nor an anonymous bit
+field.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike the
+first sentence.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+81</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">String literal concatenation happens in phase 6,
+before parsing, so it is legal and useful to use it for the string
+literal in a static_assert. It would be useful to add a note
+mentioning this.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a note:
+Multiple adjacent string literals may be used instead of a single
+/string-literal/; see [lex.phases].</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+82</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Paragraph 2 talks about declarations that can have
+nested declarations within them. It doesn't mention scoped
+enumerations - but according to 7.2/11, "Each scoped enumerator is
+declared in the scope of the enumeration."</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add "scoped
+enumeration" to the list in the second sentence.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+83</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The longest sequence of decl-specifiers that could
+possibly be a type name is taken as the decl-specifier-seq of a
+declaration. But many sequences of decl-specifiers cannot possibly
+be a type name - eg the sequence "friend int", or "typedef
+int".</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Not sure. I
+understand the rule, just not how to say it.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+84</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The grammar includes alignment-specifier as a
+production for decl-specifier, but there is no production for
+alignment-specifier. I suspect this is a holdover from before
+alignment was handled as an attribute.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Delete the
+production (including the duplicate in A6)</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FI 3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">7.1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">[dcl.spec.auto]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">While it&#8217;s considered
+too late for this standard revision, consider loosening the
+restrictions for auto specifier and making it more a mirror of a
+deduced template function parameter.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">See
+restricted-auto.ppt</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+85</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">... the init-declarator-list of the declaration
+shall not be empty (except for global anonymous unions, which shall
+be declared static). Global here means "declared at namespace
+scope". (cf 9.5/3 "Anonymous unions declared in a named namespace
+or in the global namespace shall be declared static.").</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+"global" with "namespace scope".</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+86</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2,3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The register keyword serves very little function,
+offering no more than a hint that a note says is typically ignored.
+It should be deprecated in this version of the standard, freeing
+the reserved name up for use in a future standard, much like auto
+has been re-used this time around for being similarly
+useless.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Deprecate
+current usage of the register keyword.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+87</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1, 4,
+5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Why require two keywords, where one on its own
+becomes ill-formed? thread_local should imply 'static' in this
+case, and the combination of keywords should be banned rather than
+required. This would also eliminate the one of two exceptions
+documented in 7.1.1p1.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Drop
+requirement to combine static keyword with thread_local at
+block-scope inside a function definition.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 36</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.1.1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">4</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The permission to use thread_local
+static data members is missing.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Add the static members as a permitted use.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 23</font>
+<td>
+<p><font size="2" style="font-size: 9pt">7.1.5 [constexpr]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">'constexpr' functions should be allowed to
+take const reference parameters, as long as their uses are in a
+context where a constant expression may be required. For example,
+the following should be allowed</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">template&lt;typename T, int N&gt;</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">int size(const T(&amp;)[N]) { return N;
+}</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">int a[] = { 41,42,43,44 };</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">enum { v = size(a) };</font>
+<p style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 12</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.1.5</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">It should be allowed to
+define constexpr recursively.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">There is an explanation in N2235,
+Generalized Constant Expressions&#8212;Revision 5, as
+follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.39in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">We (still) prohibit recursion in all its form in
+constant expressions. That is not strictly necessary because an
+implementation limit on recursion depth in constant expression
+evaluation would save us from the possibility of the compiler
+recursing forever. However, until we see a convincing use case for
+recursion, we don&#8217;t propose to allow it.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Then, here are the use cases where
+allowing recursion for constexpr is very useful.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Range of problem to be handled with
+constexpr would become extended. For example, user defined type
+(e.g. Complex type) could be placed in ROM area. But with current
+specification, a function defined with constexpr cannot be called
+recursively. As a side effect is not allowed in compile-time, it
+cannot be implemented to repeat anything without recursion.
+Although it could be implemented without recursion like func0,
+func1, func2 in an example below, it is not elegant
+solution.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">constexpr double func0(double x) { /*
+... */}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">constexpr double func1(double x) { /*
+call for func0 */ }</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">constexpr double func2(double x) { /*
+call for func1 */ }</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">/* ... */</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">- Compile-time and runtime</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">As constexpr can be also evaluated both
+in compile-time and runtime, we need to discuss about both
+cases.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Runtime evaluation is just to execute
+it. If you eliminate constexpr keyword, it is executable as of now.
+Any modern compiler may optimize tail recursion easily.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Compile-time evaluation is the same
+thing as template recursion. It is necessary to support floating
+point operation, but it is already possible to calculate it in
+compile-time, so it&#8217;s ok.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">- Sample</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Here is an example to calculate a square
+root using constexpr recursively.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">/*constexpr*/ double SqrtHelper(double
+x, double a, int n)</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">return n == 0 ? a : SqrtHelper(x, (x / a
++ a) / 2.0, n - 1);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">/*constexpr*/ double Sqrt(double
+x)</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">return SqrtHelper(x, x, 20);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">/*constexpr*/ double root2 = Sqrt(2.0); //
+1.41421...</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Allow constexpr recursion.</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 37</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.1.6.1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">There is a "Note: 3.9.3 describes how
+cv-qualifiers affect object and function types." So far as I can
+see, 3.9.3 CV-qualifiers only describes cv-qualifiers for objects,
+cv-qualifiers for (member) functions being described in 8.3.5
+Functions.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+89</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.1.6.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The two normative sentences in this paragraph
+appear to duplicate text elsewhere - but they aren't exact
+duplicates, which introduces uncertainty. 1. "An object declared in
+namespace scope with a const-qualified type has internal linkage
+unless it is explicitly declared extern or unless it was previously
+declared to have external linkage.". This nearly repeats 7.1.1/7:
+"Objects declared const and not explicitly declared extern have
+internal linkage." The former seems to allow more wiggle room - can
+an object be "previously declared to have external linkage" without
+having been "explicitly declared extern"? 2. "A variable of
+non-volatile const-qualified integral or enumeration type
+initialized by an integral constant expression can be used in
+integral constant expressions (5.19)." This nearly duplicates
+5.19/2, bullet 4, 1st sub-bullet - "[... an integaral constant
+expression can use] an lvalue of effective integral type that
+refers to a non-volatile const variable or static data member
+initialized with constant expressions". The latter does not allow
+for lvalues of enumeration type (neither scoped not unscoped
+enumerations are integral types - 3.9.1/7, and note 44). This seems
+to be a flaw in 5.19/2.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Make the
+normative text in this section into one or more notes, with cross
+references, and correct the referenced text if necessary.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+90</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.1.6.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">para 1 and
+table 9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The grammar in paragraph one makes
+"nested-name-specifier template simple-template-id" a
+simple-type-specifier, but unlike all the others it is omitted from
+table 9.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a row to
+table 9 mentioning simple-template-id and punting to clause 14 (cf
+decltype(expression)).</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+91</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.1.6.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">5.1/5 says "[A] parenthesized expression can be
+used in exactly the same contexts as those where the enclosed
+expression can be used, and with the same meaning, except as
+otherwise indicated." When the first bullet point of this
+paragraph, describing the type denoted by decltype(e), says "if e
+is an id-expression ... decltype(e) is the type of the entity named
+by e", 5.1/5 is not excluded, which would imply that decltype((e))
+was also the type of e. But the intention appears that it should be
+caught by the third bullet and treated as an lvalue expression, so
+decltype((e)) should be a reference to the type of e. Conversely,
+the second bullet point says "(parentheses around e are ignored)",
+which is redundant because of 5.1/5.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Insert
+"unparenthised" in the first bullet point - "if e is an
+*unparenthised* id-expression ...". In the second bullet point,
+move "(parentheses around e are ignored)" into a note.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+92</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.1.6.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The note correctly indicates that, if T is a
+template type parameter, then "friend class T;" is ill-formed. It
+might be worth pointing out at the same time that the alternative
+"friend T;" is now allowed - see 11.4/3.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Either strike
+the note or add reference to 11.4/3 and/or mention of "friend
+T;".</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+93</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.1.6.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Grammar
+before para 1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">In the third production, "enum ::opt
+nested-name-specifieropt identifier", enum should not be in
+italics; its referring to the enum keyword.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change to
+keyword font</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+94</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.1.6.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The auto
+type-specifier signifies that the type of an object being declared
+shall be deduced from its initializer or specified explicitly at
+the end of a function declarator. A function declarator does not
+declare an object.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The auto type-specifier signifies that the type of
+an object being declared shall be deduced from its initializer or
+that the return type of a function is specified explicitly at the
+end of a function declarator.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+95</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.1.6.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">(See also c++std-core-13583) This paragraph allows
+auto "in the type-specifier-seq in a new-type-id (5.3.4)" (and
+nowhere else not listed). Specifically, it isn't allowed in a
+type-id in a new-expression. That allows "new auto (42)", but not
+"new (auto)(42)". However, 5.3.4/2 suggests the latter should be
+allowed "If the auto type-specifier appears in the
+type-specifier-seq of a new-type-id or type-id of a new-expression
+...". The inconsistency should be resolved, ideally in favour of
+allowing both forms.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change "in a
+new-type-id" to "in a new-type-id or type-id in a
+new-expression".</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 24</font>
+<td>
+<p><font size="2" style="font-size: 9pt">7.1.6.4 [auto
+specifier]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Now that 'auto' is finally used in its
+most obvious sense to state `deduce the type of this variable from
+initializer', it should also be allowed in template parameter
+declarations, as in</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">template&lt;auto n&gt; struct X { /*
+&#8230; */ };</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">X&lt;903&gt; x;</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">X&lt;&amp;Widget::callback&gt; y;</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">instead of the current, often verbose and
+cumbersome</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style=
+"font-size: 10pt" face="Consolas, monospace"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif"><span lang=
+"fr-FR">template&lt;typename T, T n&gt; struct X { /*
+&#8230;</span></font> <font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">*/ };</font></font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">X&lt;int,903&gt; x;</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">X&lt;void
+(Widget::*)(),&amp;Widget::callback&gt; y;</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">We understand that 'auto' is used in
+14.1/18 in a different way (for constrained template), but that
+usable appears very strange syntax, unnatural and does not fit well
+with the usage in this section.</font>
+<p style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 38</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The discussion of attribute specifiers
+should be a separate paragraph.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 39</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The paragraph says in part "An
+opaque-enum-declaration declaring an unscoped enumeration shall not
+omit the enum-base." This statement implies that the base may be
+omitted for scoped enumerations, which is somewhat inconsistent
+with paragraph 3 and somewhat consistent with paragraph 5.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">As this implication leaves no representation, it
+should be either affirmed here or the statement should be expanded.
+Perhaps a note is warranted.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 13</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">paragraph 3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">In the description for an unscoped
+enumeration, enum-base in redeclaration must be the same underlying
+type as in the 1st declaration, but it is not described explicitly,
+while it is referred that all enum-bases in redeclarations must
+specify the same underlying type.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Replace the description,
+"same underlying type", with "same as underlying type of (previous)
+declaration."</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+96</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">enum E { }; What are the values of E? It has
+neither a smallest nor largest enumerator, so paragraph 7 doesn't
+help. (Paragraph 6 indicates that the underlying type is as if E
+had a single enumerator with value 0, but that does not define the
+values of E.)</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a second
+sentence to paragraph 7 (before "Otherwise"): "If the
+enumerator-list is empty, 0 is the only value of the
+enumeration."</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+97</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Missing punctuation after "blue" in: "The possible
+values of an object of type color are red, yellow, green, blue
+these values can be converted ..."</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a
+semicolon: "The possible values of an object of type color are red,
+yellow, green, blue; these values can be converted ..."</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+98</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It would be useful to be able to determine the
+underlying type of an arbitrary enumeration type. This would allow
+safe casting to an integral type (especially needed for scoped
+enums, which do not promote), and would allow use of
+numeric_limits. In general it makes generic programming with
+enumerations easier.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a
+TransformationTrait to 20.5.6 that returns the underlying type of
+an enumeration type.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+99</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is unclear whether an enumeration type is
+complete after an opaque-enum-declaration. This paragraph only says
+so in a note, and the general rule in 3.9/5 ("Incompletely-defined
+object types ... are incomplete types") is unclear in this
+situation.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move "an
+enumeration declared by an opaque-enum-declaration ... is a
+complete type" from the note to normative text.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 14</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.3.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.2in; text-indent: -0.2in; margin-bottom: 0in">
+<font size="2" style="font-size: 9pt">The description of the
+behavior when a member that was defined with same name in other
+namespace was referred.</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.45in; text-indent: -0.25in; margin-bottom: 0in">
+<font size="2" style="font-size: 9pt">- It seems that the behavior
+of the following case is not defined. So we think that it is
+necessary to define that.</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">namespace Q {</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">inline namespace V {</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">int g;</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">int g;</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.67in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Q::g =1;// ill-fromed, Q::V::g =1;, or Q::g =
+1;?</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.45in; text-indent: -0.25in; margin-bottom: 0in">
+<font size="2" style="font-size: 9pt">- Add that the following case
+is ill-formed to more easily to understand.</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.5in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">namespace Q {</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.5in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">inline namespace V1{</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.5in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">int g;</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.5in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.5in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">inline namespace V2{</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.5in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">int g;</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.5in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.5in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.44in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Q::g =1;//ill-formed</font>
+<p lang="en-GB" align="left" style="text-indent: 0.44in"><br>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.2in; text-indent: -0.2in; margin-bottom: 0in">
+<font size="2" style="font-size: 9pt">Add the description of the
+behavior when a member that was defined with same name in other
+namespace was referred.</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+100</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.3.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">10 and
+13</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Para 10 says "A using-declaration is a declaration
+and can therefore be used repeatedly where (and only where)
+multiple declarations are allowed." Para 13 says "Since a
+using-declaration is a declaration, the restrictions on
+declarations of the same name in the same declarative region (3.3)
+also apply to using-declarations." These appear to be saying
+exactly the same thing.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Delete para
+10, moving its example into para 13.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+101</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.3.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">20</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">If a using-declaration uses the keyword typename
+and specifies a dependent name (14.6.2), the name introduced by the
+using-declaration is treated as a typedef-name (7.1.3). That
+doesn't specify at all what the effect of using typename with a
+non-dependent name is. Is it allowed? What about outside any
+template? What if the name isn't a type? (14.6/4 doesn't cover
+this, I think.)</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Allow
+typename for non-dependent names iff they refer to a type.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-12</font>
+<td>
+<p><font size="2" style="font-size: 9pt">7.3.3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">p15</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">DE-12 Overriding and hiding
+of member functions named in using-declarations should consider
+ref-qualifiers, because they are part of the function type.</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 25</font>
+<td>
+<p><font size="2" style="font-size: 9pt">7.3.3 [The using
+declaration]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Paragraph 21</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">The syntax for concept map alias is
+unnecessarily both confused and verbose.</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">We strongly suggest simplifications,
+e.g.</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">using N1::C&lt;int&gt;;</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">that fits well with existing constructs.
+The syntactic complexity is too high for a new feature presumably
+designed to support sound programming.</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+102</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.3.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This paragraph says "If name lookup finds a
+declaration for a name in two different namespaces, and the
+declarations do not declare the same entity and do not declare
+functions, the use of the name is ill-formed." But the example uses
+declaration of functions, so is not covered by this
+paragraph.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move the
+example to paragraph 7, and/or replace it with an appropriate
+example.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 40</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.6</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">The list of attributes is missing an attribute to
+indicate that a function with a</font> <code><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">throw()</font></code>
+<font size="2" style="font-size: 9pt">(throws nothing) clause need
+not have the</font> <code><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">unexpected()</font></code> <font size="2"
+style="font-size: 9pt">catch clause generated. This attribute was a
+motivating example for the attribute syntax, and its omission is
+surprising.</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Add the attribute.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 41</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.6</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">A common problem is unintentionally
+declaring a new virtual member function instead of overriding a
+base virtual member function.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">An attribute stating intent to override would
+enable better diagnostics.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 26</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">7.6 [Attributes]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Are they part of object types or not? The
+section does not appear to indicate that clearly.</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FI 1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">7.6</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Add override-attribute for
+functions in order to avoid mistakes when overriding
+functions.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">See
+override&#173;-attribute.doc, override-attribute.ppt</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 27</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">7.6.1</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">This section specifies that no name lookup
+is performed on any identifier contained in an attribute-token.
+This in particular implies that, for example, it is impossible to
+define a template class parameterized by its alignment. That
+restriction is unacceptable.</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">The original alignment proposal made that
+useful construct possible.</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Furthermore paragraph 7.6.1/2 appears
+contradictory with the rest of that section -- since no name lookup
+is performed, how a 'type-id'is determined?</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+103</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.6.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Attributes
+should support pack expansion. For example, this would be extremely
+useful with the align attribute, directly supporting the (removed)
+functionality of aligned_union. NOte that aligned_union was removed
+as varaiant-unions were considered a complete replacement - however
+this is not true for variadic templates. Adding this support to
+attributes would remove the remaining need, and support similar
+attributes in the future.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add:
+attribute... to the grammar for attribute-list Add to list in
+14.5.3p4: "In an attribute-list(7.6.1); the pattern is an
+attribute."</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+104</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.6.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is helpful for each subclause to contain a
+short paragraph introducing its intent an purpose. 7.6 has such a
+paragraph, but it is nested under a more specific
+subsection.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">7.6.1p1
+should move up one level to become 7.6p1. There grammar should
+remain under 7.6.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+105</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.6.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Allowing only
+one level of namespaces in attributes seems unnecessarily
+limiting.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">To:
+attribute-scoped-token: attribute-namespace :: identifier add
+attribute-namespace :: attribute-scoped-token</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+106</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.6.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Extensive use of alignment and related terms
+without cross reference.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+cross-reference to 3.11.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 15</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.6.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">An abbreviation of 7.6.2
+should be &#8220;[decl.attr.align]&#8221; instead of
+&#8220;[dcl.align]&#8221;.<br>
+Section name &#8220;[dcl.align]&#8221; is not consistent with
+others, because others in 7.6 are the form of
+&#8220;dcl.attr.*&#8221;. In N2761, the section name of 7.1.7 had
+been changed from &#8220;[dcl.align]&#8221; to
+&#8220;[dcl.attr.align]&#8221;, but in N2800 it was reverted to
+&#8220;[dcl.align]&#8221; along with a change of section number,
+7.1.7 to 7.6.2.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Change "[dcl.align]" of
+7.6.2 to "[decl.attr.align]".</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+107</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.6.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">While undefined behaviour might be the best we can
+guarantee, it would be helpful to encourage implementations to
+diagnose function definitions that might execute a return.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Adda a [Note
+: implementations are encouraged to issue a diagnostic where the
+definition of a function marked [[noreturn]] might execute a return
+statement -- end note]</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+108</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.6.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is unclear why no diagnostic is required for an
+easily detectable violation. It is even more surprising that the
+associated footnote mandates behaviour for an ill-formed
+program.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike "no
+diagnostic required" and the associated footnote.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 42</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7.6.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">The meaning of the</font> <code><font size="2"
+style="font-size: 9pt" face=
+"Arial, sans-serif">[[final]]</font></code> <font size="2" style=
+"font-size: 9pt">attribute applied to classes is inconsistent with
+other languages and not desirable in its own right.</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">Modify the semantics of</font> <code><font size=
+"2" style="font-size: 9pt" face=
+"Arial, sans-serif">[[final]]</font></code> <font size="2" style=
+"font-size: 9pt">applied to classes. See the attached paper "Issues
+with the C++ Standard" under Chapter 7 "Meaning of</font>
+<code><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">[[final]]</font></code> <font size="2" style=
+"font-size: 9pt">attribute applied to classes".</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+109</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.6.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The example code refers in comments to
+"Compilation unit" A and B. The term should be "Translation unit"
+(2/1)</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+"Compilation" with "Translation" in two places</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><br>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><br>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+110</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">7.6.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The code in the example (compilation unit A) has:
+"foo_head[i].load(memory_order_consume)". foo_head[i] is of type
+foo *, so it does not have a load member.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change the
+type of foo_head to atomic&lt;foo *&gt;[].</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 43</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">8</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">With the introduction of late-specified return
+types for functions and lambda expressions, we now have three
+different syntaxes for declaring functions. The</font>
+<code><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">-&gt;</font></code> <font size="2" style=
+"font-size: 9pt">late declaration is used in two. The</font>
+<code><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">auto</font></code> <font size="2" style=
+"font-size: 9pt">keyword is used in one, but also used differently
+in variable definitions.</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Some simplification is needed.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+111</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">8.3.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">13</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Example missing closing bracket in
+template&lt;typename... T&gt; void f(T (* ...t)(int, int);</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add closing
+bracket like this: template&lt;typename... T&gt; void f(T (*
+...t)(int, int));</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 44</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">8.3.5</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">13</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">In the Example, "template void f(T (*
+...t)(int, int);" is missing a close parenthesis.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">It presumably should read: "template void f(T (*
+...t))(int, int);".</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 45</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">8.3.5</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">13</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">At present, function
+parameter packs can only occur at the end of a
+parameter-declaration-list. This restriction unnecessarily
+prohibits uses of function parameter packs in cases where template
+argument deduction isn&#8217;t needed, e.g.,</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">template&lt;class...
+T&gt; struct X { };</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">template&lt;class... T1,
+class... T2&gt;</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">struct X&lt;pair&lt;T1,
+T2&gt;...&gt; {</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">void f(T1...,
+T2...);</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">};</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">More importantly, this
+restriction is inconsistent with the way pack expansions are
+handled. For example, this template is well-formed (but X&lt;T...,
+int&gt; is a non-deduced context):</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">template&lt;class...
+T&gt; void f(X&lt;T..., int&gt;);</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Therefore, the restriction that limits function
+parameter packs to the end of the parameter-declaration-list should
+be removed. Instead, function parameter packs not at the end of the
+parameter-declaration-list should be considered non-deduced
+contexts.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">In 8.3.5p13, remove the sentence
+&#8220;</font><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang="">A function parameter pack, if
+present, shall occur at the end of the
+parameter-declaration-list.&#8221;</span></font></font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang="">In 14.8.2.1p1, replace the phrase
+&#8220;For a function parameter pack&#8221; with &#8220;For a
+function parameter pack that occurs at the end of a</span></font>
+<font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang=
+""><i>parameter-declaration-list</i></span></font><font size="2"
+style="font-size: 9pt" face="Arial, sans-serif"><span lang=
+"">&#8221;.</span></font></font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang="">Replace the note text &#8220;A
+function parameter pack can only occur at the end of a
+parameter-declaration-</span></font><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">list (8.3.5).&#8221; with
+&#8220;A function parameter pack that does not occur at the end of
+a parameter-declaration-list is a non-deduced
+context.&#8221;</font></font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">In 14.8.2.5p5, add a new
+bullet: &#8220;A function parameter pack that does not occur at the
+end of its parameter-declaration-list.&#8221;</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">In 14.8.2.5p10, replace
+&#8220;</font><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang="">If</span></font> <font size="2"
+style="font-size: 9pt" face="Arial, sans-serif">the
+parameter-declaration corresponding to Pi is a function parameter
+pack&#8221; with &#8220;</font><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif"><span lang=
+"">If</span></font> <font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">the parameter-declaration corresponding to Pi
+is a function parameter pack and Pi occurs at the end of the
+parameter-declaration-list&#8221;.</font></font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Replace</font> <font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif"><span lang="">the note
+text &#8220;A function parameter pack can only occur at the end of
+a parameter-declaration-</span></font><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">list (8.3.5).&#8221; with
+&#8220;A function parameter pack that does not occur at the end of
+a parameter-declaration-list is a non-deduced
+context.&#8221;</font></font>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-13</font>
+<td>
+<p><font size="2" style="font-size: 9pt">8.4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">p2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-13 The second
+paragraph, quoting the grammar for the declarator of a function
+declaration, is not considering late-specified return types and
+attributes.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Properly quote the grammar
+from 8.3.5.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 16</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">8.5</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">15</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo, duplicated "in"</font>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">"The initialization that occurs in in the
+forms"</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Remove one.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 46</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">8.5.3</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">The ability for an rvalue
+reference to bind to an lvalue opens a type-safety hole that
+becomes very dangerous with concepts. For example, consider
+vector&#8217;s push_back operation:</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">requires
+MoveConstructible&lt;T&gt; void push_back(T&amp;&amp;);</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">requires
+CopyConstructible&lt;T&gt; void push_back(const T&amp;);</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">For a copy-constructible
+T (which is also move-constructible), push_back does the right
+thing. However, if T is something that is move-constructible (e.g.,
+unique_ptr&lt;int&gt;), the second overload is removed from
+considered (it is effectively SFINAE&#8217;d away), so only the
+first overload remains. Therefore, one could accidentally call
+push_back with an lvalue of type T, and push_back would silently
+move from the lvalue. The same problem occurs without concepts
+(albeit less frequently).</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><br>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Prohibit rvalue
+references from binding to lvalues.</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Unfortunately this change
+will break some current use cases of rvalue reference including the
+use of rvalue streams, and of the forward function itself. To
+resolve this we may want to consider three types of
+references:</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<ol>
+<li>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">The current
+reference.</font>
+<li>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">A non-const reference
+that only binds to rvalues.</font>
+<li>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">A non-const reference
+that will bind to both lvalues and rvalues.</font></ol>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Still another solution would be to adopt the
+&#8220;deleted function&#8221; solution for all functions. This
+solution is described in comment for 12.1, 12.4, 12.8, but
+restricted to special functions in that comment. (See US
+NN).</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 49</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">8.5.4</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">6</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">In the Example, the comments could be
+improved.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">See the attached paper "Issues with the
+C++ Standard" under "Editorial Issues" and "8.5.4/6".</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+112</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4-9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">We now have concepts that should (or should not?)
+map to the terms described in Clause 9 - these should be at least
+referenced.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+appropriate forward references to 14.9.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+113</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">9.4.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Mis-applied
+edit from the paper n2756</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The term
+'constant-initializer' should have been struck out when replaced by
+brace-or-equal-initializer. There are two occurrences in this
+paragraph</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 50</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">12.1, 12.4, 12.8</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Implicitly-declared
+default constructors, destructors, copy constructors, and copy
+assignment operators are deleted when their definitions would be
+ill-formed. However, unlike with overloading and template argument
+deduction, access control is performed as part of the check for
+making one of these special function deleted. This inconsistency
+should be removed.</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">This change would
+sacrifice some backward compatibility in favor of consistency. With
+the current wording, checking that the following class
+&#8216;A&#8217; is CopyConstructible would proceed without error
+(it is not CopyConstructible):</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">class A { A(const
+A&amp;); };</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">With the proposed change,
+testing whether A is CopyConstructible would produce a diagnostic.
+To fix the problem, the user would have to use a deleted
+function:</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">class A { A(const A&amp;)
+= delete; };</font>
+<p align="left"><br>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">In 12.1p5, remove the phrase
+&#8220;</font><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang="">or inaccessible from the
+implicitly-declared default</span></font> <font size="2" style=
+"font-size: 9pt" face=
+"Arial, sans-serif">constructor&#8221;.</font></font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">In 12.4p3, remove the phrase
+&#8220;</font><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang="">or a destructor that is
+inaccessible from the implicitly-declared destructor,&#8221; and
+the phrase &#8220;or a destructor that is inaccessible from
+the</span></font> <font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">implicitly-declared
+destructor</font><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang="">&#8221;.</span></font></font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">In 12.8p5, remove the phrase
+&#8220;</font><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang="">or inaccessible from the
+implicitly-declared copy constructor&#8221; from the two places it
+occurs.</span></font></font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">In 12.8p10, remove the phrase
+&#8220;</font><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang="">or inaccessible from the
+implicitly-declared copy assignment operator&#8221; from the two
+places it occurs.</span></font></font>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 28</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">12.6.1 [Explicit initialization]</font>
+<p><br>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">This section, in particular the example with
+`g' appears contradictory with the syntax for uniform
+initialization.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 51</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">12.6.2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The discussion of delegating
+constructors should be in its own paragraph.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+114</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">12.6.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Despite all
+the attempts to unify initialization syntax, it is still not
+possible to copy-initialize base classes or non-static data
+members, which means the explicit keyword cannot have a bearing
+during evaluation of a constructor. A minimal addition to the
+grammar, allowing an optional = between the mem-initializer-id and
+braced-init-list would allow the user to choose between copy and
+direct initialization</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Ammend the grammar for mem-initializer:
+mem-initializer-id =OPT braced-init-list Extend p3 to allow for
+Copy Initialization if the optional = is present: 3 The
+expression-list or braced-init-list in a mem-initializer is used to
+initialize the base class or non-static data member subobject
+denoted by the mem-initializer-id according to the initialization
+rules of 8.5 for direct-initialization, OR COPY-INITIALIZATION IF
+THE OPTIONAL = IS PRESENT BETWEEN THE MEM-INITIALIZER-ID and the
+BRACED-INIT-LIST. [Example:...</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 52</font>
+<td>
+<p><font size="2" style="font-size: 9pt">13.5.8</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 5</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">A word is
+misspelled.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Change &#8220;shal&#8221;
+to &#8220;shall&#8221;.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+115</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">14</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">6-11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Exported templates were a great idea that is
+generally understood to have failed. In the decade since the
+standard was adopted, only one implementation has appeared. No
+current vendors appear interested in creating another. We
+tentatively suggest this makes the feature ripe for deprecation.
+Our main concern with deprecation is that it might turn out that
+exported constrained templates become an important compile-time
+optimization, as the constraints would be checked once in the
+exported definition and not in each translation unit consuming the
+exported declarations.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Consider
+deprecating exported templates, but no action yet. Examine
+interaction with constrained templates, and see if other more
+appropriate mechanism will support compile-time
+optimization.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+116</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">14</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">6-11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Is it possible to export a concept map template?
+The current wording suggests it is possible, but it is not entirely
+clear what it would mean.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Either
+prohibit exporting concept map templates, or more directly address
+what it means to export a concept map.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+117</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">14</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It would be nice to allow template alias within a
+function scope, and possibly a scoped concept map. As these affect
+name lookup and resolution, rather than defining new callable code,
+they are not seen to present the same problems that prevented class
+and function templates in the past.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Allow
+template aliases to be declared inside a function scope, and
+consider scoped concept maps.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+118</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">14</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">6-11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Exported templates are a complicated feature with
+surprisingly little text. To make this important text more visible,
+split it off into its own subclause [temp.export]</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Create a new
+subclause [temp.export] containing 14p6-11. Move 14p12 ahead of
+this subclause.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+119</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">14</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Does a concept map have linkage? Reading this
+paragraph and 3.5 suggests a concept map template has external
+linkage, but not a 'regular' concept map. Believe this is an
+oversight that the linkage words were not updated to provide an
+exception, rather than linkage of concept maps is intended.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add an
+exception that concept map templates have no linkage, or add
+concept maps to the list of entities with linkage in 3.5</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+120</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">14.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">As this is the first time the phrase
+&#8220;parameter pack&#8221; appears in Ch 14 I would like to see
+the section 8.3.5 referenced here (as well as in 14.1p17).</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Insert
+&#8220;(8.3.5)&#8221; after &#8220;parameter pack&#8221;</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+121</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">14.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">18</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The example (that follows the normative text) has
+no begin example marker</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Prefix the
+example code with "[ Example:"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 29</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">14.3 [Template arguments]</font>
+<p><br>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Constant expressions of any literal type should
+be allowed as template arguments.</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 53</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">14.5.1</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">5</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">If the requirements of a constrained member
+that is a copy constructor, copy assignment operator, or destructor
+are not satisfied, then that user-declared special function will
+not exist. It appears that, in this case, the special function will
+then be</font> <font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><i>implicitly</i></font> <font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">defined, which is likely
+to either (a) fail to compile or (b) produce a function with the
+wrong semantics. For example:</font></font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">template&lt;ObjectType
+T&gt; class vector {</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">T* first, last,
+end;</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">public:</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">requires
+CopyConstructible&lt;T&gt; vector(const vector&amp;);</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">};</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">If instantiated with a type that is not
+CopyConstructible, vector will get an implicitly-defined copy
+constructor that performs a copy of the pointers.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Add to 14.5.1p5:</font>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">If the constrained member is a copy constructor
+(12.8), destructor (12.4), or copy assignment operator and its
+template requirements are not satisfied, then a copy constructor,
+destructor, or copy assignment operator, respectively, with the
+same signature as the constrained member (after substituting the
+class template&#8217;s template arguments for its template
+parameters) will be declared as a deleted function (8.4).</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+122</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">14.5.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Variadic templates should be supported in axioms.
+There are axioms in the library that rely on this feature, such as
+the FrontEmplacement axiom in FrontEmplacementContainer
+(23.1.6.1p10)</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+clarification in p2 that function parameter packs can be used to
+declare axioms, much like p1 clarifies they can be used to declare
+concepts as well as templates.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 30</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">14.5.7 [Template aliases]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">When are two template alias names
+equivalent?</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">E.g. given</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">template&lt;template&lt;class&gt;
+class&gt; struct X { };</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">template&lt;typename,typename&gt; struct Y
+{ };</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">template&lt;typename T&gt;</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">using Z1 = Y&lt;int,T&gt;;</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">template&lt;typename T&gt;</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">using Z2 = Y&lt;int,T&gt;;</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Are the types X&lt;Z1&gt; and X&lt;Z2&gt;
+equivalent?</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">We would suggest yes (since Z1&lt;T&gt;
+and Z2&lt;T&gt; are the same for all T), but we do not see any
+wording to that effect.</font>
+<p><br>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 17</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">14.7.2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">2</font><sup><font size="2" style=
+"font-size: 9pt">nd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 15</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">if that namespace is inline, any
+namespace from its enclosing namespace set.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">if that namespace is inline, any namespace</font>
+<font size="2" style="font-size: 9pt" color=
+"#339966">forming</font> <font size="2" style="font-size: 9pt">its
+enclosing namespace set.</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Replace "from" with
+"forming"</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-14</font>
+<td>
+<p><font size="2" style="font-size: 9pt">14.7.3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">p1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-14 The bulleted list
+neither addresses "member function template of a class" nor "member
+class template of a class".</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Add the respective
+bullets.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 18</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">14.7.3</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">2</font><sup><font size="2" style=
+"font-size: 9pt">nd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 2</font><sup><font size="2" style=
+"font-size: 9pt">nd</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">any namespace from its enclosing
+namespace set</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">any namespace</font> <font size="2" style=
+"font-size: 9pt" color="#339966">forming</font> <font size="2"
+style="font-size: 9pt">its enclosing namespace set</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Replace "from" with
+"forming"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 19</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">14.8.2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">6</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo, duplicated "is"</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">"At certain points in the template argument
+deduction process it <u>is is</u> necessary"</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Remove one</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 54</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">14.9 [concept],</font>
+<p><font size="2" style="font-size: 9pt">14.10
+[temp.constrained]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ge</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Concepts is of course the
+largest new feature in C++0x (in terms of new text inserted into
+the wording), and already we have found some significant defects
+with it. So far nothing devastating has been found, but more time
+is needed to shake more bugs out.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">I propose no specific
+change here.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 55</font>
+<td>
+<p><font size="2" style="font-size: 9pt">14.9.1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 6</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The paragraph number is in
+the wrong place, causing a grammar rule to be indented more than
+its fellows.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Move the paragraph number
+so as to follow the grammar rules, thus numbering the single
+sentence, &#8220;The body of a concept &#8230; .&#8221;</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 56</font>
+<td>
+<p><font size="2" style="font-size: 9pt">14.9.1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 6</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The sentence contains two
+references to 14.9.1.3 [concept.req].</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Change the second such
+reference (at the end of the sentence) to 14.9.1.4
+[concept.axiom].</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 57</font>
+<td>
+<p><font size="2" style="font-size: 9pt">14.9.1.4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">A word is misplaced,
+changing the intended meaning.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Change &#8220;only find
+&#8230; if&#8221; to &#8220;find &#8230; only if&#8221;.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 58</font>
+<td>
+<p><font size="2" style="font-size: 9pt">14.9.1.4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The listed phrases are not
+grammatically parallel.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Insert &#8220;in&#8221;
+before &#8220;one&#8221; so as to obtain &#8220;... in the concept,
+in one of its less refined concepts, or in an associated
+requirement.&#8221;</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 59</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">14.9.1.4</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Axioms are under-specified and provide little
+benefit to programmers, so they should be removed from the working
+paper. The optimizations permitted by axioms (see 14.9.1.4p4-5) are
+not compulsory (and, therefore, programmers cannot rely on them)
+and the semantics expressed by axioms cannot be verified by any
+implementation. The resulting specification has lead to great
+confusion (see the reflector thread &#8220;Are floating point types
+Regular?&#8221; starting with c++std-lib-22717). Given the level of
+confusion and the inability to verify the correctness of axioms, it
+is likely that many axioms written by programmers (including those
+specified in the candidate draft) will be incorrect.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Remove clause 14.9.1.4
+[concept.axiom]</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">In 2.11p1, remove
+&#8220;axiom&#8221; from the list of keywords.</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">In 14.5.8p7, remove
+&#8220;, or if the resulting concept map fails to satisfy the
+axioms of the corresponding concept&#8221;</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">In 14.9.1p6, remove
+axiom-definition from the list of grammar productions for
+concept-member-specifier. Remove &#8220;, and axioms&#8221; from
+the final sentence, and instead &#8220;and&#8221; prior to
+&#8220;associated requirements&#8221; in the final sentence.</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Remove paragraph 14 of
+clause 14.9.2.</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">In 14.10.1p6, remove the sentence, &#8220;When
+the concept-instance-alias-def appears in the optional
+requires-clause of an axiom-definition (14.9.1.4), the potential
+scope of the identifier begins at its point of declaration and
+terminates at the end of the
+axiom-de&#64257;nition.&#8221;</font></font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="3" face=
+"Helvetica, sans-serif"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">In clauses 20.2.5, 20.2.8, 23.1.6.1, 23.1.6.2,
+and 24.1.4, remove the axiom-definitions and replace them with
+paragraphs (denoted Requires, Postconditions, or Effects, as
+appropriate) that express the intended semantics of the concepts
+from which the axiom-definitions were removed.</font></font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">In 24.1.4p2, replace the
+word &#8220;axiom&#8221; with &#8220;condition.&#8221;</font>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 31</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">14.9.1.4 [Axioms]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">This section states that an
+axiom-definition defines a new semantics axiom but is unusually
+vague as to what those semantics might be.</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">The use of the '==' and '!=' with
+completely new semantics, unrelated to anything we have seen before
+in C++ is both unwise and confusing, especially if the types
+involved in the expressions happen to have operator== and
+operator!= defined.</font>
+<p style="margin-bottom: 0in"><font size="2" style=
+"font-size: 10pt" face="Consolas, monospace"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">We strongly suggest use
+of different tokens, e.g.</font> <font size="2" style=
+"font-size: 9pt" face="Wingdings">&#61683;</font><font size="2"
+style="font-size: 9pt" face="Arial, sans-serif">, and opposed to
+this obscure usage/overload.</font></font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">The description is very vague. How many
+times is an implementation permitted to replace one expression by
+another one when they have side effects?</font>
+<p><br>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-15</font>
+<td>
+<p><font size="2" style="font-size: 9pt">14.9.1.4</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-15 There is no
+implementation experience for axioms. Use of axioms is an area of
+active scientific research. It is likely that syntax changes will
+become necessary to make good use of axioms; having the syntax
+space already crowded is unhelpful. Axioms ought to be useful in
+concepts applicable to floating-point types (such as
+EqualityComparable), but IEEE floating-point types have special
+values such as NaN violating the axioms.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Remove section 14.9.1.4
+and any reference to axioms in the rest of the proposed standard
+other than the keyword reservation in section 2.11.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+123</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">14.9.1.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">auto concepts and axioms are incompatible. An
+axiom defines the semantics of an operaton or set of operations
+that describes the run time behaviour. A concept describes purely
+syntactic requirements at compile time. Where an auto concept will
+match anything that meets the syntax requirements, there is no way
+to know if the axioms will be met or not, and no way to opt out via
+some kind of negative concept map.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a
+paragraph making axioms ill-formed inside an auto concept.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK<br>
+124</font>
+<p><br>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">14.9.1.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Spelling
+mistake, double-e in were.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">weere -&gt;
+were</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+125</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">14.9.1.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The implicit equality comparison operator
+available to axioms has no semantic. It is not clear what
+expressing the condition if( a == b ) { conditional-axiom } would
+mean if a and b are not truly EqualityComparable. We suspect the
+intent of the 'implicit defefinition' is to support declaring the
+equivalence of statements, a context where the operator will not
+actually be evaluated.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Define the
+semantics of the implicitly declared comparison operators, or
+restrict their usage to declaring equivalence between
+statements.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+126</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">14.9.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">41</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This paragraph contains the only definition of the
+underlying_type member - but it's a note, so not normative.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move the
+second sentence to the Requires clause in paragraph 42.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+127</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">14.9.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Provide a diagram clearly showing refinement
+relationship between the different support concepts. Several were
+created during development of this clause and they were very
+helpful.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Provide the
+diagram.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+128</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">14.9.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">It is
+surprising for many people that non-copyable move-only types can be
+used with a return statement, and so Returnable does not always
+imply CopyConstructible.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">A non-normative note: [Note: 'move only' types
+that are constructible from rvalue references may be Returnable,
+but not CopyConstructible(20.1.8) - end note]</font>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 20</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">14.9.4</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">2</font><sup><font size="2" style=
+"font-size: 9pt">nd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.2in; text-indent: -0.2in; margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Trivially copyable type was
+added in &#8220;3.9 Types&#8221;, so we think that it is necessary
+to add concept to trivially copyable type like
+&#8220;TriviallyCopyableType&#8221;.</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.2in; text-indent: -0.2in; margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add TriviallyCopyableType that is
+trivially copyable type as concept.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+129</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">14.10.1,
+20.1.2</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It should be possible to support boolean constant
+expressions as requirements without resorting to defining the True
+concept in the library. Boolean expressions are very likely to be
+constraints when deadline with non-type template parameters and
+variadic templates, and constraints in these cases should feel just
+as natural as constraints on the type system.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove the
+True concept and library subclause 20.1.2. Provide support in
+14.10.1 for boolean constant expressions as constraints. This may
+involve overloading the true keyword to disambiguate but ideally
+would not.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 60</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">14.10.1</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">1</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">The use of &amp;&amp; as the separator for a
+list of requirements has shown itself to be a serious teachability
+problem. The mental model behind &#8216;&amp;&amp;&#8217; treats
+concepts as simple predicates, which ignores the role of concepts
+in type-checking templates. The more programmers read into the
+&#8216;&amp;&amp;&#8217; (and especially try to fake || with
+&amp;&amp; and !), the harder it is for them to understand the role
+of concept maps. Simply changing the separator to &#8216;,&#8217;
+would eliminate a significant source of confusion.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Replace</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">requirement-list:</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">requirement-list ...
+[opt] &amp;&amp; requirement</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">requirement ...
+[opt]</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">with</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">requirement-list</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">requirement-list ...[opt]
+, requirement</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">requirement ...
+[opt]</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">In 14.5.4p6, replace the
+first sentence with:</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">The instantiation of an
+expansion produces a comma-separated list E1, E2, ..., EN, where N
+is the number of elements in the pack expansion parameters.</font>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+130</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">With the new crrent_exception API it is possible
+to capture a reference to an exception that will outlive its last
+active handler. That is in conflict with the sentance "When the
+last remaining active handler for the exception exits by any means
+other than throw; the temporary object is destroyed and the
+implementation may deallocate the memory for the temporary
+object;"</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Update
+sentence to allow for exceptions held in excpetion_ptr
+objects.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+131</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">A handler catching its parameter by
+rvalue-reference is syntactically valid, but will never be
+activated.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Disallow
+handlers catching by rvalue-reference.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+132</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">16</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">There are obscure cases whrere a copy constructor
+is not usually the best match to copy-initialize an object, e.g. A
+converting constructor template taking arguments by non-const
+reference. A footnote explaining such cases would be helpful, or
+the sentance could be rewritten using copy-initialization instead
+of directly calling a copy constructor.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Rewite using
+copy-initialization rather than directly invoking the copy
+constructor</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+133</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Template aliases have the same semantics as a
+typedef so should also be disallowed</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">add "or
+alias-declaration" after "shall not appear in a typedef
+declaration".</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+134</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The sentance "An exception-specification can also
+include the class std::bad_exception (18.7.2.1)." is
+redundant.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Either strike
+the quoted sentance, or add a note explaining why it is worth
+calling special attention to this class.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+135</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Unclear if
+std::unexpected is called before or after the function arguments
+have been destroyed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Clarify the
+sequence of calling unexpected with respect to interesting objects,
+such as function arguments or partially constructed bases and
+members when called from a constructor or destructor</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+136</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Exception
+specifications have proven close to worthless in practice, while
+adding a measurable overhead to programs. The feature should be
+deprecated. The one exception to the rule is the empty throw
+specification which could serve a legitimate optimizing role if the
+requirement to call the runtime unexpected mechanism was relaxed in
+this case.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move 15.4 and
+the parts of 15.5 that refer to it to Appendix D. Replace 15.4 with
+a simpler specification for empty throw specifications, where the
+std::unexpected call is conditionally supported allowing vendors to
+choose between optimizing and providing runtime checks. Ideally
+require vendors to provide a mode where the runtime checks are
+always disabled.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+137</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">There is no mention of the current_exception API
+which can extend the lifetime of an exception object. There should
+at least be a forward reference to the library clause 18.7.5</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add another
+paragraph outlining 18.7.5 and the ability of an exception_ptr to
+extend the lifetime of an exception object</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+138</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.5.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The third bullet is redundant with the first, as
+it is a subset of the same conditions.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Merge the
+third bullet into the first bullet as a note or example.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+139</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.5.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">According to the first bullet it is perfectly
+alright for a library function to exit by throwing an exception
+during stack unwinding, This is clearly not true.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike the
+word 'user' from the first bullet point.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+140</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.5.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The detailed specification can fool people into
+thinking an exception will automatically be translated into
+bad_exception, where the default behaviour of std::unexcepted is to
+immediately call std::terminate();</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a note
+highlighting the default behaviour of std::unexpected if the user
+does not supply a hander-function</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+141</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">15.6</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This whole subclause is redundant due to 15.1p5
+and 15.3p17</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike
+15.6</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+142</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">16.3.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This paragraph opens with "[ Note" but has no
+corresponding "end note ]"</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add "end note
+]"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+143</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">16.3.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Example uses
+#define t(x,y.z) x ## y ## z</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change
+"x,y.z" to "x,y,z"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">17-30</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ge/te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The active issues identified in WG21
+N2806, C++ Standard Library Active Issues, must be addressed and
+appropriate action taken.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+<font color="#000080" size="2" style="font-size: 11pt"><u><a href=
+"http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html"><font size="2"
+style=
+"font-size: 9pt">http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html></a></u></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Appropriate action would include making changes to
+the CD, identifying an issue as not requiring a change to the CD,
+or deferring the issue to a later point in time.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">General Comment</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Library</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ge</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">The adoption of the library `constexpr'
+proposal was not reflected in the draft, despite formal WG21
+committee vote.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">FR 2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">General Comment</font>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 61</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">17 onward</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The concepts core language
+feature is applied to only some of the Standard Library clauses,
+and even then not always consistently.</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Review all clauses of the
+Standard Library, and consistently apply concept technology
+wherever possible and appropriate. The proposed wording in WG21
+N2781 exemplifies the necessary level of detail.</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">CA-2</font>
+<td>
+<p style="margin-top: 0.04in"><font size="2" style=
+"font-size: 9pt">17 Library</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in">
+&#8220;<font size="2" style="font-size: 9pt">Concepts&#8221; are a
+significant new addition to the language, but are not exploited
+uniformly in the library as documented in CD 14882.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Fix the standard library so that
+&#8220;Concepts&#8221; are used appropriately in the
+library.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 62</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">17-30</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ge</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Provide concepts and
+requirements clauses for all standard library templates</font>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 63</font>
+<td>
+<p style="margin-top: 0.04in; margin-bottom: 0.04in"><font size="2"
+style="font-size: 9pt">17-30</font>
+<p><br>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The behavior of the
+library in the presence of threads is incompletely
+specified.</font>
+<p><font size="2" style="font-size: 9pt">For example, if thread 1
+assigns to X, then writes data to file f, which is read by thread
+2, and then accesses variable X, is thread 2 guaranteed to be able
+to see the value assigned to X by thread 1? In other words, does
+the write of the data "happen before" the read?</font>
+<p><font size="2" style="font-size: 9pt">Another example: does
+simultaneous access using operator at() to different characters in
+the same non-const string really introduce a data race?</font>
+<td>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">17 through 30</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-2 Marking a constructor
+with "explicit" has semantics even for a constructor with zero or
+several parameters: Such a constructor cannot be used with
+list-initialization in a copy-initialization context, see 13.3.1.7.
+The standard library apparently has not been reviewed for marking
+non-single-parameter constructors as "explicit".</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Consider marking
+zero-parameter and multi-parameter constructors "explicit" in
+classes that have at least one constructor marked "explicit" and
+that do not have an initializer-list constructor.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 21</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">17 Library</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">21.2, 21.4,</font>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27.2, 27.6, 27.7, 27.8.1, 28.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Support of char16_t/char32_t is
+insufficient. The basic_xxx classes of &lt;iostream&gt;,
+&lt;fstream&gt;, &lt;regex&gt;, etc. does not have typedefs for
+char16_t/char32_t.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Functions such as stoi, to_string in
+&#8216;21.4 Numeric Conversion&#8217; does not support
+char16_t/char32_t types.</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">Add commented lines corresponding to char16_t,
+char32_t.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">21.2 paragraph1</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">// 21.4: numeric
+conversions</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">int stoi(const
+u16string&amp; str, size_t *idx = 0, int base = 10);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">long stol(const
+u16string&amp; str, size_t *idx = 0, int base = 10);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">unsigned long
+stoul(const u16string&amp; str, size_t *idx = 0, int base =
+10);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">long long stoll(const
+u16string&amp; str, size_t *idx = 0, int base = 10);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">unsigned long long
+stoull(const u16string&amp; str, size_t *idx = 0, int base =
+10);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">float stof(const
+u16string&amp; str, size_t *idx = 0);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">double stod(const
+u16string&amp; str, size_t *idx = 0);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">long double stold(const
+u16string&amp; str, size_t *idx = 0);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">u16string
+to_u16string(long long val);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">u16string
+to_u16string(unsigned long long val);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">u16string
+to_u16string(long double val);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<font size="2" style="font-size: 9pt">int stoi(const u32string&amp;
+str, size_t *idx = 0, int base = 10);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">long stol(const
+u32string&amp; str, size_t *idx = 0, int base = 10);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">unsigned long
+stoul(const u32string&amp; str, size_t *idx = 0, int base =
+10);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">long long stoll(const
+u32string&amp; str, size_t *idx = 0, int base = 10);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">unsigned long long
+stoull(const u32string&amp; str, size_t *idx = 0, int base =
+10);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">float stof(const
+u32string&amp; str, size_t *idx = 0);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">double stod(const
+u32string&amp; str, size_t *idx = 0);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">long double stold(const
+u32string&amp; str, size_t *idx = 0);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">u32string
+to_u32string(long long val);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">u32string
+to_u32string(unsigned long long val);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">u32string
+to_u32string(long double val);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">27.2</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ios&lt;char&gt; ios;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ios&lt;wchar_t&gt; wios;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ios&lt;char16_t&gt; u16ios;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ios&lt;char32_t&gt; u32ios;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ifstream&lt;wchar_t&gt; wifstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ofstream&lt;wchar_t&gt; wofstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_fstream&lt;wchar_t&gt; wfstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_streambuf&lt;char16_t&gt; u16streambuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_istream&lt;char16_t&gt; u16istream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ostream&lt;char16_t&gt; u16ostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_iostream&lt;char16_t&gt; u16iostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringbuf&lt;char16_t&gt; u16stringbuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_istringstream&lt;char16_t&gt; u16istringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ostringstream&lt;char16_t&gt; u16ostringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringstream&lt;char16_t&gt; u16stringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_filebuf&lt;char16_t&gt; u16filebuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ifstream&lt;char16_t&gt; u16ifstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ofstream&lt;char16_t&gt; u16ofstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_fstream&lt;char16_t&gt; u16fstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_streambuf&lt;char32_t&gt; u32streambuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_istream&lt;char32_t&gt; u32istream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ostream&lt;char32_t&gt; u32ostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_iostream&lt;char32_t&gt; u32iostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringbuf&lt;char32_t&gt; u32stringbuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_istringstream&lt;char32_t&gt; u32istringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ostringstream&lt;char32_t&gt; u32ostringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringstream&lt;char32_t&gt; u32stringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_filebuf&lt;char32_t&gt; u32filebuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ifstream&lt;char32_t&gt; u32ifstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ofstream&lt;char32_t&gt; u32ofstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+<u>&nbsp;<font size="2" style="font-size: 11pt"><font size="2"
+style="font-size: 9pt">typedef basic_fstream&lt;char32_t&gt;
+u32fstream;</font></font></u>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+state&gt; class fpos;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+fpos&lt;char_traits&lt;char&gt;::state_type&gt; streampos;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+fpos&lt;char_traits&lt;wchar_t&gt;::state_type&gt;
+wstreampos;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+fpos&lt;char_traits&lt;char16_t&gt;::state_type&gt;
+u16streampos;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+fpos&lt;char_traits&lt;char32_t&gt;::state_type&gt;
+u32streampos;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">27.6</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_istream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_istream&lt;char&gt; istream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_istream&lt;wchar_t&gt; wistream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt"><u>typedef
+basic_istream&lt;char16_t&gt; u16istream;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_istream&lt;char32_t&gt; u32istream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_iostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_iostream&lt;char&gt; iostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_iostream&lt;wchar_t&gt; wiostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt"><u>typedef
+basic_iostream&lt;char16_t&gt; u16iostream;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_iostream&lt;char32_t&gt; u32iostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_ostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ostream&lt;char&gt; ostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ostream&lt;wchar_t&gt; wostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt"><u>typedef
+basic_ostream&lt;char16_t&gt; u16ostream;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ostream&lt;char32_t&gt; u32ostream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">27.7 paragraph 1</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp;&nbsp; <font size="2" style=
+"font-size: 9pt">class Allocator = allocator&lt;charT&gt;
+&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_stringbuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringbuf&lt;char&gt; stringbuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringbuf&lt;wchar_t&gt; wstringbuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt"><u>typedef
+basic_stringbuf&lt;char16_t&gt; u16stringbuf;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringbuf&lt;char32_t&gt; u32stringbuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp;&nbsp; <font size="2" style=
+"font-size: 9pt">class Allocator = allocator&lt;charT&gt;
+&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_istringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_istringstream&lt;char&gt; istringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_istringstream&lt;wchar_t&gt; wistringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt"><u>typedef
+basic_istringstream&lt;char16_t&gt; u16istringstream;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_istringstream&lt;char32_t&gt; u32istringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp;&nbsp; <font size="2" style=
+"font-size: 9pt">class Allocator = allocator&lt;charT&gt;
+&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_ostringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ostringstream&lt;char&gt; ostringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ostringstream&lt;wchar_t&gt; wostringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt"><u>typedef
+basic_ostringstream&lt;char16_t&gt; u16ostringstream;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ostringstream&lt;char32_t&gt; u32ostringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;&nbsp;&nbsp;&nbsp; <font size="2" style=
+"font-size: 9pt">class Allocator = allocator&lt;charT&gt;
+&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_stringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringstream&lt;char&gt; stringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringstream&lt;wchar_t&gt; wstringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringstream&lt;char16_t&gt; u16stringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_stringstream&lt;char32_t&gt; u32stringstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">27.8.1 paragraph 1</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_filebuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_filebuf&lt;char&gt; filebuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_filebuf&lt;wchar_t&gt; wfilebuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt"><u>typedef
+basic_filebuf&lt;char16_t&gt; u16filebuf;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_filebuf&lt;char32_t&gt; u32filebuf;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_ifstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ifstream&lt;char&gt; ifstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ifstream&lt;wchar_t&gt; wifstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt"><u>typedef
+basic_ifstream&lt;char16_t&gt; u16ifstream;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ifstream&lt;char32_t&gt; u32ifstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_ofstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ofstream&lt;char&gt; ofstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ofstream&lt;wchar_t&gt; wofstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt"><u>typedef
+basic_ofstream&lt;char16_t&gt; u16ofstream;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_ofstream&lt;char32_t&gt; u32ofstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">template &lt;class
+charT, class traits = char_traits&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">class
+basic_fstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_fstream&lt;char&gt; fstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_fstream&lt;wchar_t&gt; wfstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt"><u>typedef
+basic_fstream&lt;char16_t&gt; u16fstream;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_fstream&lt;char32_t&gt; u32fstream;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">28.4</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_regex&lt;char&gt; regex;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_regex&lt;wchar_t&gt; wregex;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_regex&lt;char16_t&gt; u16regex;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+basic_regex&lt;char32_t&gt; u32regex;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+sub_match&lt;const char*&gt; csub_match;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+sub_match&lt;const wchar_t*&gt; wcsub_match;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+sub_match&lt;const char16_t*&gt; u16csub_match;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+sub_match&lt;const char32_t*&gt; u16csub_match;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+sub_match&lt;string::const_iterator&gt; ssub_match;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+sub_match&lt;wstring::const_iterator&gt; wssub_match;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+sub_match&lt;u16string::const_iterator&gt; u16ssub_match;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+sub_match&lt;u32string::const_iterator&gt; u32ssub_match;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+match_results&lt;const char*&gt; cmatch;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+match_results&lt;const wchar_t*&gt; wcmatch;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+match_results&lt;const char16_t*&gt; u16cmatch;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+match_results&lt;const char32_t*&gt; u32cmatch;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+match_results&lt;string::const_iterator&gt; smatch;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+match_results&lt;wstring::const_iterator&gt; wsmatch;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+match_results&lt;u16string::const_iterator&gt; u16smatch;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+match_results&lt;u32string::const_iterator&gt; u32smatch;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_iterator&lt;const char*&gt; cregex_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_iterator&lt;const wchar_t*&gt; wcregex_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_iterator&lt;const cha16r_t*&gt; u16cregex_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_iterator&lt;const char32_t*&gt; u32cregex_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_iterator&lt;string::const_iterator&gt;
+sregex_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_iterator&lt;wstring::const_iterator&gt;
+wsregex_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_iterator&lt;u16string::const_iterator&gt;
+u16sregex_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_iterator&lt;u32string::const_iterator&gt;
+u32sregex_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_token_iterator&lt;const char*&gt;
+cregex_token_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_token_iterator&lt;const wchar_t*&gt;
+wcregex_token_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_token_iterator&lt;const char16_t*&gt;
+u16cregex_token_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_token_iterator&lt;const char32_t*&gt;
+u32cregex_token_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_token_iterator&lt;string::const_iterator&gt;
+sregex_token_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_token_iterator&lt;wstring::const_iterator&gt;</font><font size="2"
+style="font-size: 9pt" face="Arial, sans-serif"><span lang=
+"zxx">&#12288;&#12288;&#12288;</span></font><font size="2" style=
+"font-size: 9pt">wsregex_token_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_token_iterator&lt;u16string::const_iterator&gt;
+u16sregex_token_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">
+&nbsp;<font size="2" style="font-size: 9pt">typedef
+regex_token_iterator&lt;u32string::const_iterator&gt;</font><font size="2"
+style="font-size: 9pt" face="Arial, sans-serif"><span lang=
+"zxx">&#12288;</span></font><font size="2" style=
+"font-size: 9pt">u32sregex_token_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+144</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">List of
+contents of library should be extened to cover new clauses</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add "regular
+expressions, atomic operations and threads"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+145</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><span lang="en-US">Summary of numeric
+facilities should mention random numbers</span></font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add random
+number framework to the list of library facilities</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+146</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a summary
+paragraph for regular expressions</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a summary
+paragraph for regular expressions</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+147</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a summary
+paragraph for threads</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a summary
+paragraph for threads</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+148</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Table
+12</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Table 12 is mentioned in and relates to section
+17.2, but has been pushed down to appear directly after the title
+of section 17.3 which is rather unfortunate/confusing for the
+reader.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Make sure
+tables are rendered in the section to which they relate.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+149</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">For consistency with narrow-oriented and
+wide-oriented streams, we should add terms for streams of Unicode
+character sequences</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Define
+Utf16-oriented stream classes and Uft32-oriented stream classes for
+streams of char16_t/char32_t values.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+150</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The addition
+of move semantics to the language means that many library APIs
+leave an object in a safely-destructible state, where no other
+operations can safely be performed unless it is assigned a new
+value. Library presentation would be simplified and made more
+precise if we introduce a term for this state. By analogy with
+singular iterators suggest the term 'singular object' or 'the
+object is in a singular state'.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Define 'singular state' such that an object with a
+singular state can only be assigned to or safely destroyed.
+Assiging a new value typically removes the singular state. Note
+that objects with a singular state may not be safely copied, so you
+cannot put an object into a singular state by copying another
+object in a singular state. Use this new term in the postcondition
+of all library APIs that move from an rvalue reference. It might
+also be used to simplify the definition of singular iterator to an
+iterator value with a singular state.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+151</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.3.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Missing crossreference to 17.3.17
+[defns.repositional.stream]</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+cross-reference in the existing empty brackets</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+152</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.3.12</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Object state is using a definition of object
+(instance of a class) from outside the standard, rather than the
+'region of storage' definiton in 1.8p1</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Clarify terms
+and usage</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+153</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.3.17</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">If a repositional stream can only seek to a
+position previously encountered, then an
+arbitrary-positional-stream cannot satisfy this definition, as
+cross-referenced in 17.3.17</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike the
+word 'only'. A note might be added to reinforce the intent</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK<br>
+154</font>
+<p><br>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.3.20</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Missing
+definition of a stable partition algorithm</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+definition from 25.2.12p7</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+155</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.3.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add clause 28
+to list that use this definition of character</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add clause 28
+to list that use this definition of character</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+156</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.3.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add regular expressions to set of templates using
+character container type</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add regular
+expressions to set of templates using character container
+type</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+157</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.5.2.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add concepts to the ordered list of
+presentation</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add concepts
+into the sequence</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+158</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.5.2.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">templates are
+neither classes nor functions</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Replace 'classes' and 'functions' with 'classes
+and class templates' and 'functions and function templates'</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+159</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.5.2.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Footnote
+152</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This informative footnote was relevant in 1998,
+not 2008. The term 'existing vendors' may imply something different
+now</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike the
+footnote, or replace 'existing' with 'original' or similar</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+160</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.5.2.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">requires is now a keyword with a specific meaning
+related to concepts, and its use in library specifcation may be
+confusing. Generally the Requires clause is used to make
+requirements on the caller, not the library, so typically providing
+runtime pre-conditions. Suggest a new name to refflect that. Note
+that Clause 30 already seems to be written to this
+convention.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+'Requires' with 'Preconditions'</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+161</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.5.2.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This paragraph is redundant as the definition of
+the term 'handler function' is already provided in 17.3. Are we in
+danger of proving two definitions of the same terms? Which is the
+'controlling' definition?</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike
+17.5.2.4p4</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+162</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.5.2.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Clause 30 makes use of a 'Synchronization'
+semantic element, that frequently appears either between Effects:
+and Postconditions:, or between Returns: and Throws:</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+'Synchronization' to the list either between Effects: and
+Postconditions:, or between Returns: and Throws:.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+163</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.5.2.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Many functions are defined as "Effects: Equivalent
+to a...", which seems to also define the preconditions, effects,
+etc. But this is not made clear.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Introduce an
+explicit "Equivalent to", which defines all of the properties of
+the function.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+164</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.5.3.2.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">This phrasing
+predates concepts. While this kind of description is still used,
+the examples provided are now all concepts, and should be replaced
+with appropriate examples</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Use better names for the examples. Ideally totally
+replace the need by constraining all templates in library, so that
+real concepts are all that is needed. Note if retained that
+CopyConstructible is mis-spelled.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+165</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.5.3.2.2, 17.5.3.2.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">constraints on bitmask and enumation types were
+supposed to be tightened up as part of the motivation for the
+constexpr feature - see paper n2235 for deails</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Adopt wording
+in line with the motivation described in N2235</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+166</font>
+<td>
+<p align="justify" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">17.5.3.2.4.1, 17.5.3.3</font>
+<p align="justify"><br>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">List of
+library clauses should go up to 30, not 27</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+initial refernce to ch27 with ch30</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+167</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">17.5.3.4
+Private members</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Comment
+marker in wrong place.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Change: // streambuf* sb; exposition only to
+streambuf* sb; // exposition only To reflect actual usage.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+168</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.2.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">We should make it clear (either by note or
+normatively) that namespace std may contain inline namespaces, and
+that entities specified to be defined in std may in fact be defined
+in one of these inline namespaces. (If we're going to use them for
+versioning, eg when TR2 comes along, we're going to need
+that.)</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+"namespace std or namespaces nested within namespace std" with
+"namespace std or namespaces nested within namespace std or inline
+namespaces nested directly or indirectly within namespace
+std"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+169</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.2.2</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This phrasing contradicts later freedom to
+implement the C standard library portions in the global namespace
+as well as std. (17.6.2.3p4)</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Resolve
+conflict in either place</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+170</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.2.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">One of goals of C++0x is to make language easier
+to teach and for 'incidental' programmers. The fine-grained headers
+of the C++ library are valuable in large scale systems for managing
+dependencies and optimising build times, but overcomplicated for
+simple development and tutorials. Add additional headers to support
+the whole library through a single include statement.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a new
+header &lt;std&gt; that has the effect of including everything in
+tables 13 and 14, except &lt;iosfwd&gt; and &lt;cassert&gt;. Add an
+additional header &lt;fwd&gt; that adds all declarations from
+&lt;std&gt; but no definitions.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+171</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.2.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Does freestanding implementation require a full
+implementation of all listed headers? The reference to abort,
+at_exit and exit is confusing. Is a conforming implementation allow
+to deliver partial forms of these headers? If so which ones? Are
+empty versions of everything but &lt;cstdlib&gt; conforming?</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Either strike
+the references to abort, at_exit and exit, or clarify which headers
+only require partial support.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+172</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.2.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">No reference to new functions quick_exit and
+at_quick_exit</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add reference
+to quick_exit and at_quick_exit</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+173</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.2.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">table
+15</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">&lt;initializer_list&gt; is missing from headers
+required in freestanding implementations.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add 18.8,
+initializer lists, &lt;initializer_list&gt;, to the end of the
+table.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 23</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">17.6.2.4</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">2</font><sup><font size="2" style=
+"font-size: 9pt">nd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, Table 15</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">There is a freestanding implementation including
+&lt;type_traits&gt;, &lt;array&gt;, &lt;ratio&gt;, lately added to
+Table 13, C++ library headers.<br>
+Programmers think them useful and hope that these headers are also
+added to Table 15, C++ headers for freestanding implementations,
+that shows the set of headers which a freestanding implementation
+shall include at least.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add &lt;type_traits&gt;, &lt;array&gt;,
+&lt;ration&gt; to Table 15.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+174</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.3.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The phrasing is mildly ambiguous when using the
+word 'it' to refer back to the header - an unfotunate reading might
+confuse it with the translate unit, which is the subject of the
+surrounding clause.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace 'the
+first reference to any of the entities declared in that header by
+the translation unit' with 'the first reference to any of the
+entities that header declares in the translation unit'</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+175</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.4.2.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Local types can now be used to instantiate
+templates, but don't have external linkage</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove the
+reference to external linkage</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+176</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.4.3.3</font>
+<td>
+<p align="justify" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Footnote 175</font>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Reference to
+namespace ::std should be 17.6.4.2</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change
+referfence from 17.6.4.3 to 17.6.4.2</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+177</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.4.3.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Sentence is redundant as double underscores are
+reserved in all contexts by 17.6.4.3.3</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike the
+sentence</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+178</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.4.8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The last
+sentence of the third bullet "Operations on such types can report a
+failure by throwing an exception unless otherwise specified" is
+redundant as behaviour is already undefined.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike the
+sentence</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+179</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.4.8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">According to the 4th bullet there is a problem if
+"if any replacement function or handler function or destructor
+operation throws an exception". There should be no problem throwing
+exceptions so long as they are caught within the function.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace the
+word 'throws' with 'propogates'</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 22</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">17.6.5.7</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">4</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The statement below describes relation
+among two or more threads using words &#8220;between
+threads&#8221;:<br>
+[Note: This means, for example, that implementations can&#8217;t
+use a static object for internal purposes without synchronization
+because it could cause a data race even in programs that do not
+explicitly share objects between threads. &#8212;end note ]</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">In such case, &#8220;among&#8221; is
+preferred instead of &#8220;between&#8221;.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Change "between threads" to "among
+threads".</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">There are same cases in 17.6.1 paragraph
+2, 17.6.5.7 paragraph 6, 30.1 paragraph 1, 30.3.1 paragraph 1
+also.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+180</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.5.10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1,
+4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It should not be possible to strengthen the
+exception specification for virtual functions as this could break
+user code. Note this is not a problem in practice as there are no
+virtual functions with exception specifications in the current
+library, other than empty throw specifications which it is not
+possible to strengthen.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+restriction that exception specification of virtual functions
+cannot be tightened.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+181</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.5.10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Footnote
+186</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This footnote is wrong. C library functions do not
+have any exception specification, but might be treated as if they
+had an empty throw specification</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Clarify that
+this note does not mean the functions are genuinely declared with
+the specification, but are treated as-if.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+182</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">17.6.5.10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Footnote
+188</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is very helpful to assume all exceptions thrown
+by the standard library derive from std::exception. The
+'encouragement' of this note should be made normative.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Make this
+footnote normative</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+184</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">18 -&gt;
+30</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The new alias-declaration syntax is generally
+easier to read than a typedef declaration. This is especially true
+for complex types like function pointers.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace all
+typedef declarations in the standard library with
+alias-declarations, except in the standard C library.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 24</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">18</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">2</font><sup><font size="2" style=
+"font-size: 9pt">nd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, Table 16</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Subclauses are listed in Table 16
+as:</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">"18.6 Type identification &#8230;"</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">"18.8 Initializer lists &#8230;"</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-top: 0.04in"><font size="2" style=
+"font-size: 9pt">"18.7 Exception handling &#8230;".</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.06in; text-indent: -0.06in; margin-bottom: 0in">
+<font size="2" style="font-size: 9pt">Sort them in the increasing
+order<br>
+"18.6 Type identification &#8230;"</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">"18.7 Exception handling &#8230;".</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">"18.8 Initializer lists
+&#8230;"</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 25</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">18.1</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">6</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph , last line, SEE ALSO</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">max_align_t is described in 18.1, so add
+3.11 Alignment as the reference.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">Add "<u>3.11, Alignment</u></font><font size="2"
+style="font-size: 9pt" color="#000000">" to</font> <font size="2"
+style="font-size: 9pt">SEE ALSO.</font></font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 32</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">18.2.1 [Numeric limits]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">The definition of numeric_limits&lt;&gt;
+as requiring a regular type is both conceptually wrong and
+operationally illogical. As we pointed before, this mistake needs
+to be corrected. For example, the template can be left
+unconstrained. In fact this reflects a much more general problem
+with concept_maps/axioms and their interpretations. It appears that
+the current text heavily leans toward experimental academic type
+theory.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">We suggest that a more pragmatic approach, in
+the spirit of C and C++, be taken so that calls to constrained
+function templates are interpreted as assertions on *values*, not
+necessarily semantics assertions on the carrier type.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-16</font>
+<td>
+<p><font size="2" style="font-size: 9pt">18.2.1</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">DE-16 The class template
+<font face="Arial, sans-serif">numeric_limits</font> should not
+specify the <font face="Arial, sans-serif">Regular</font> concept
+requirement for its template parameter, because it contains
+functions returning NaN values for floating-point types; these
+values violate the semantics of <font face=
+"Arial, sans-serif">EqualityComparable</font>. See also library
+issue 902 in WG21 document N2794 "C++ Standard Library Active
+Issues List (Revision R60)", available at
+
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2794.html
+.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Specify a concept
+requirement with fewer constraints as appropriate, for example
+<font face="Arial, sans-serif">SemiRegular</font>.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 26</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">18.2.1.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">numeric_limits does not use
+concept.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class T&gt; class
+numeric_limits&lt;const T&gt;;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class T&gt; class
+numeric_limits&lt;volatile T&gt;;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class T&gt; class
+numeric_limits&lt;const volatile T&gt;;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;<u>Regular</u> T&gt; class
+numeric_limits&lt;const T&gt;;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;<u>Regular</u> T&gt; class
+numeric_limits&lt;volatile T&gt;;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;<u>Regular</u> T&gt; class
+numeric_limits&lt;const volatile T&gt;;</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-17</font>
+<td>
+<p><font size="2" style="font-size: 9pt">18.2.6</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">DE-17 The class <font face=
+"Arial, sans-serif">type_index</font> should be removed; it
+provides no additional functionality beyond providing appropriate
+concept maps.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Specify concept maps for
+"const type_info *" as required by the ordered and unordered
+containers and remove the class <font face=
+"Arial, sans-serif">type_index</font>.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+185</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.3.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">There is no header &lt;stdint&gt;, it should
+either be &lt;stdint.h&gt; or &lt;cstdint&gt;</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+&lt;stdint&gt; with &lt;cstdint&gt;</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-18</font>
+<td>
+<p><font size="2" style="font-size: 9pt">18.4</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">DE-18 The proposed C++
+standard makes a considerable number of existing programs that have
+well-defined behavior according to ISO/IEC 14882:2003 have
+undefined behavior without a diagnostic hint to the programmer at
+all. This applies to the presence of threads and to pointer safety
+(the latter was introduced to support garbage collection). In order
+to avoid requiring a full code review for user code, facilities
+should be present that allow the compile-time detection of the
+advanced features of the proposed C++ standard. It is expected that
+C++ implementations will provide a means (for example, a
+command-line switch) to turn off either or both of threads and
+garbage collection support, turning potentially undefined programs
+into well-defined ones.<br>
+<i>Note:</i> This issue is contributing significantly to Germany's
+overall &#8220;no&#8221; vote.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Consider applying the
+changes proposed in WG21 document N2693 "Requirements on programs
+and backwards compatibility", available at
+http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2693.html
+.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+186</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Footnote
+221</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">What is the purpose of this comment? The standard
+stream objects (cin, cerr etc.) have a peculiar lifetime that
+extends beyond the program. They may never be destroyed so will not
+be responsible for flushing buffers at the stated time.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove the
+footnote</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+187</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The term "thread safe" is not defined nor used in
+this context anywhere else in the standard.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Clarify the
+intended meaing of "thread safe"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+188</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">12</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The function _Exit does not appear to be defined
+in this standard. Should it be added to the table of functions
+included-by-reference to the C standard?</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Depends on
+where _Exit comes from</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+189</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">18.4,
+18.7</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The addition
+of the [[noreturn]] attribute to the language will be an important
+aid for static analysis tools.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The following functions should be declared in C++
+with the [[noreturn]] attribute: abort exit quick_exit terminate
+unexpected rethrow_exception throw_with_nested</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 27</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">18.4, 18.9, 18.7.2.2, 18.7.3.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">There are Standard library functions
+that never return to the caller. They are explained so in the
+Standard but not declared explicitly.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Consider to add the attribute
+[[noreturn]] to such functions,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">15.5.2 unexpected<br>
+18.4: abort(), exit(), quick_exit,<br>
+18.7.2.2: unexpected_handler,<br>
+18.7.3.1: terminate_handler,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">18.7.6 rethrow_nested</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">18.7.6 throw_with_nested<br>
+18.9: longjmp.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+190</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.5.1</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">various</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">It is not
+entirely clear how the current specification acts in the presence
+of a garbage collected implementation.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">All deallocation functions taking a pointer
+parameter should have a Precondition : ptr is a safely-derived
+pointer value.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+191</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.5.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">According to
+the second bullet, behaviour becomes undefined (for lack of a
+specification) if the user has not yet called
+set_new_handler.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Rephrase the second bullet in terms of a new
+handler being installed, and update any definition of handler
+function necessary to be sure the term 'installed' is
+defined.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+192</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.5.1.2</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The declared signature is not compatible with the
+current requirement to throw std::length_error. It is too late to
+weaken the exception specification, so the only other change is to
+preserve new (improved) behaviour is to throw std::bad_alloc, or
+something derived from std::bad_alloc.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Fix 5.3.4p7
+by required std::bad_alloc rather than std::length_error</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+193</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.5.2.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">quick_exit has been added as a new valid way to
+terminate a program in a well defined way</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change 3rd
+bullet: call either abort(), exit() or quick_exit();</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+194</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.6</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The inclusion of type_index and
+hash&lt;type_index&gt; in &lt;typeinfo&gt; brings dependencies into
+&lt;typeinfo&gt; which are inconsistent with the definition of
+freestanding C++ in 17.6.2.4.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move
+type_index and hash&lt;type_index&gt; out of &lt;typeinfo&gt; and
+into a new header, &lt;typeindex&gt;.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 28</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">18.6, 18.7, 19.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Errors reported by Exception classes are
+of types char or std::string only. For example, std::exception is
+declared with char, std::string types, therefore types
+wchar_t/wstring, char16_t/u16string, or char32_t/u32string can not
+be used.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Consider other types.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 29</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">18.7.6</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">throw_with_nested does not use
+concept.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class T&gt; void
+throw_with_nested(T&amp;&amp; t); // [[noreturn]]</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;CopyConstructible T&gt; void
+throw_with_nested(T&amp;&amp; t); // [[noreturn]]</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 30</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">18.7.6</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">To handle nested exceptions strictly,
+error information of tree structure will be required though, the
+nested_exception does not support tree structure. It is
+insufficient as error handling.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Consider nested_exception to support
+tree structure.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 31</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">18.7.6</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">It is difficult to understand in which
+case nested_exception is applied.</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">Consider to add a sample program which rethrows
+exception.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+195</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.8</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The class definition of std::initializer_list
+contains concept-maps to Range which should be out of the class,
+and in &lt;iterator_concepts&gt; instead. Otherwise, it's not
+possible to use initializer_lists in a freestanding C++
+implementation.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Delete the
+two concept maps from std::initializer_list.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+196</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">18.8.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Concept maps
+for initializer_list to Range should not be in language support
+headers, but instead in iterator concepts.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Remove section 18.8.3 and put it in 24.1.8.1
+instead, so that the concept_maps from initializer_list to Range
+are specified under Range instead of under initializer lists; also,
+so that they're implemented in &lt;iterator_concepts&gt; instead of
+&lt;initializer_list&gt;.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+197</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">19</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">All the
+exception classes in this clause take a std::string argument by
+const reference. They should all be overloaded to accept
+std::string by rvalue rerefence for an efficient move as
+well.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Provide a constructor for every exception class in
+clause 19 accepting a std::string by rvalue reference, with the
+semantics that the passed string may be moved.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 32</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">19.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Messages returned by the member function
+what() of standard exception classes seem difficult to
+judge.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">For example, following messages are
+returned by what() of std::bad_alloc of existing
+implementations:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Compiler: Message returned by
+what()</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">---------------------------------------------</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Borland C++ 5.6.4: no named exception
+thrown</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Visual C++ 8.0: bad allocation</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Code Warrior 8.0: exception</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">g++ 3.4.4: St9exception</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">It is difficult to recognize what exception was
+thrown when using those compilers except Visual C++.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Consider to add footnote that recommends
+what() returns message easy to recognize what exception was
+thrown.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 64</font>
+<td>
+<p><font size="2" style="font-size: 9pt">19.3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p><font color="#000000">&#8220;</font> <font size="2" style=
+"font-size: 9pt">See also: ISO C 7.1.4, 7.2, Amendment 1
+4.3.</font><font size="2" style="font-size: 9pt" color=
+"#000000">&#8221; It is unclear why this cross reference is here.
+Amendment 1 was to C89, not C99.</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Delete this cross reference.
+If necessary, expand the main text to include the relevant
+referenced text</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 65</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Scoped allocators and allocator propagation traits
+add a small amount of utility at the cost of a great deal of
+machinery. The machinery is user visible, and it extends to library
+components that don't have any obvious connection to allocators,
+including basic concepts and simple components like pair and
+tuple.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Sketch of proposed resolution: Eliminate
+scoped allocators, replace allocator propagation traits with a
+simple uniform rule (e.g. always propagate on copy and move),
+remove all mention of allocators from components that don't
+explicitly allocate memory (e.g. pair), and adjust container
+interfaces to reflect this simplification.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">Components that I propose eliminating
+include</font> <font size="2" style="font-size: 9pt" color=
+"#0000FF"><span style=
+"background: #ffffce">HasAllocatorType</span></font><font color=
+"#000080"><u><a href=
+"http://wiki.corp.google.com/twiki/bin/edit/Main/HasAllocatorType?topicparent=Main.CppStandardIssues">
+<font size="2" style=
+"font-size: 9pt">?</font></a></u></font><font size="2" style=
+"font-size: 9pt">, is_scoped_allocator, allocator_propagation_map,
+scoped_allocator_adaptor, and</font> <font size="2" style=
+"font-size: 9pt" color="#0000FF"><span style=
+"background: #ffffce">ConstructibleAsElement</span></font><font color="#000080">
+<u><a href=
+"http://wiki.corp.google.com/twiki/bin/edit/Main/ConstructibleAsElement?topicparent=Main.CppStandardIssues">
+<font size="2" style=
+"font-size: 9pt">?</font></a></u></font><font size="2" style=
+"font-size: 9pt">.</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+198</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">20</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The
+organization of clause 20 could be improved to better group related
+items, making the standard easier to navigate.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">20.6.7, 20.6.8, 20.6.9 and 20.6.10 should be
+grouped under a section called "operator wrappers" or similar. The
+goal of all 4 subsections combined is to provide a functor for
+every operator in the language. 20.6.17 class template hash should
+numerically appear immediately after the operator wrappers, as they
+are functors that are used in similar ways 20.6.11, 20.6.12,
+20.6.13, 20.6.14, 20.6.15 are strongly related to 20.6.3, and to an
+extent 20.6.2. These should all come under a subheading of
+"function adapters" 20.7.1, 20.7.3, 20.7.4, 20.7.5, 20.7.6, 20.7.7
+and 20.7.10 should all be grouped as subclauses under [20.7.2
+Allocators] [20.7.12 unique_ptr] should be a sub-section of
+[20.7.13 smart pointers] [20.7.13 smart pointers] is important
+enough to have a high level bullet after [20.7 memory], suggest
+renumbering as [20.8 smart pointers] [20.7.13.7 Pointer safety] is
+nothing to do with smart pointers and should become its own
+subclause [20.7.14 Pointer safety] [20.9 date and time functions]
+should be moved under [20.8 time utilities] and retitled [20.8.6 C
+Library] (as per memory management/C Library) [20.6.18
+reference_closure] is fundamentally a language support feature and
+should move to clause 18, see separate comment [20.6.5
+reference_wrapper] should be simplified and moved into [2.2 utility
+components], see separate comment [20.6.4 result_of] should be
+reorganised as a type trait - see separate comment Tuples and pairs
+are closely related so merge tuple and pair into the same subclause
+- see more general comment on this</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+199</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">20.1.1,
+20.1.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The requirement that programs do not supply
+concept_maps should probably be users do not supply their own
+concept_map specializations. THe program will almost certainly
+supply concept_maps - the standard itself supplies a specialization
+for RvalueOf? references. Note that the term _program_ is defined
+in 3.5p1 and makes no account of the standard library being treated
+differently to user written code.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace the
+term 'program' with 'user'.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+200</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.1.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">All standard
+library use expects Predicates to be CopyConstructible, and this
+should be recognised easily without reatedly stating on every
+use-case.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Either require CopyConstructible&lt;F&gt; as part
+of Predicate, or create a refined concept, StdPredicate, used
+throughout the library that requires CopyConstructible as well as
+Callable. Consider making (Std)Predicate SemiRegular.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+201</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.1.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The
+Consistency axiom for LessThanComparable will not compile.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add a requires clause to the Consistency axiomL
+requires HasLessEquals&lt;T&gt; &amp;&amp;
+HasGreaterEquals&lt;T&gt;, or split the Consistency axiom into two
+so that 'basic' consistency can be asserted regardless of the
+&lt;=/&gt;= requirement.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 33</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.1.5</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">LessThanComparable and
+EqualityComparable don't correspond to NaN.</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">Apply concept_map to these concepts at
+FloatingPointType</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 66</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.1.10</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Application of the
+"Regular" concept to floating-point types appears to be
+controversial (see long discussion on std-lib reflector).</font>
+<td>
+<p><font size="2" style="font-size: 9pt">State that the
+&#8220;Regular&#8221; concept does not apply to floating-point
+types.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 34</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.2</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 4</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Though N2672 pointed at adding
+"#include&lt;initializer_list&gt;", it isn't reflected.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">add followings</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">#include &lt;initializer_list&gt; // for
+concept_map</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 67</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.2.1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">&#182; 5 first
+sent.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Some connective words are
+missing.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Insert
+&#8220;corresponding to&#8221; before &#8220;an lvalue reference
+type.&#8221;</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 35</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.2.3</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">6</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo,</font>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">"stdforward" should be "std::forward"</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Correct typo.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+202</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.2.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The references to pair in the tuple-like access to
+pair functions qualify pair with std::pair even though they are in
+a namespace std block.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove the
+std:: qualification from these references to pair.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 68</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.2.12</font>
+<td>
+<p><font size="2" style="font-size: 9pt">IntegralLike</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te/ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The code defining the
+context is syntactically incorrect.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Insert a comma in two
+places: at the end of the third line of refinements, and at the end
+of the fourth line of refinements.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+203</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.3.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1-4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The ratio_xyz types have a misplaced '}'. For
+example: template &lt;class R1, class R2&gt; struct ratio_add {
+typedef see below} type; ;</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move the '}'
+to after the typedef: template &lt;class R1, class R2&gt; struct
+ratio_add { typedef see below type; };</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 36</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.4.2.1</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">19</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 6</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">"it it" should be "it is"</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Correct typo.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+204</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Table
+41</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is not possible to create a variant union based
+on a parameter pack expansion, e.g. to implement a classic
+discriminated union template.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Restore
+aligned_union template that was removed by LWG issue 856.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 69</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.5</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">This section, dealing with
+tuple&lt;&gt;, should be in the same section as the similar utility
+pair&lt;&gt;.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Restructure Clause 20 so
+as to bring these similar components together.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+205</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.5.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">integral_constant objects should be usable in
+integral-constant-expressions. The addition to the language of
+literal types and the enhanced rules for constant expressions make
+this possible.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a
+constexpr conversion operator to class tempalate integral_constant:
+constexpr operator value_type() { return value; }</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+206</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.5.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">para
+4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Currently the std says: "In order to instantiate
+the template is_convertible&lt;From, To&gt;, the following code
+shall be well formed:" But the code shown is the requirement for
+the result of is_convertible to be a true_type, not a precondition
+on whether the template can be instantiated.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change: "In
+order to instantiate the template is_convertible&lt;From, To&gt;,
+the following code shall be well formed:" To: "The template
+is_convertible&lt;From, To&gt; inherits either directly or
+indirectly from true_type if the following code is well
+formed:"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+207</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.5.6.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Table
+36</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">suffix
+"::type" is missing from the some of the examples.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Change: Example:remove_const&lt;const volatile
+int&gt;::type evaluates to volatile int, whereas
+remove_const&lt;const int*&gt; is const int*. &#8212;end example
+To: Example:remove_const&lt;const volatile int&gt;::type evaluates
+to volatile int, whereas remove_const&lt;const int*&gt;::type is
+const int*. &#8212;end example And change:
+Example:remove_volatile&lt;const volatile int&gt;::type evaluates
+to const int, whereas remove_volatile&lt;volatile int*&gt; is
+volatile int*. &#8212;end example To:
+Example:remove_volatile&lt;const volatile int&gt;::type evaluates
+to const int, whereas remove_volatile&lt;volatile int*&gt;::type is
+volatile int*. &#8212;end example And change:
+Example:remove_cv&lt;const volatile int&gt;::type evaluates to int,
+whereas remove_cv&lt;const volatile int*&gt; is const volatile
+int*. &#8212;end example To: Example:remove_cv&lt;const volatile
+int&gt;::type evaluates to int, whereas remove_cv&lt;const volatile
+int*&gt;::type is const volatile int*. &#8212;end example</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 37</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.5.7</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Table 41</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo.</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.19in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">There isn't a period at the end of enable_if's
+comments.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">If B is true, the member typedef type
+shall equal T; otherwise, there shall be no member typedef
+type</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">If B is true, the member typedef type
+shall equal T; otherwise, there shall be no member typedef
+type.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add &#8221;.&#8221;</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 70</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.6</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Specifications now
+expressed via narrative text are more accurately and clearly
+expressed via executable code.</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Wherever concepts are
+available that directly match this section&#8217;s type traits,
+express the traits in terms of the concepts instead of via
+narrative text. Where the type traits do not quite match the
+corresponding concepts, bring the two into alignment so as to avoid
+two nearly-identical notions.</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 71</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.6.7</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Table 51, last row, column
+3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The grammar is
+incorrect.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Change &#8220;conversion
+are&#8221; to &#8220;conversion is&#8221;.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 38</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.6.12.1.3</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.19in; text-indent: -0.19in; margin-bottom: 0in">
+<font size="2" style="font-size: 9pt">add the move requirement for
+bind's return type.<br></font><br>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.19in; text-indent: -0.19in; margin-bottom: 0in">
+<font size="2" style="font-size: 9pt">For example, assume following
+th1 and th2,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><br>
+void f(vector&lt;int&gt; v) { }<br>
+<br>
+vector&lt;int&gt; v{ ... };<br>
+thread th1([v]{ f(v); });<br>
+thread th2(bind(f, v));<br>
+<br>
+When function object are set to thread, v is moved to th1's lambda
+expression in a Move Constructor of lambda expression becuase th1's
+lambda expression has a Move Constructor. But bind of th2's return
+type doesn't have the requirement of Move, so it may not moved but
+copied.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Add the requirement of move to get rid
+of this useless copy.</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">And also, add the MoveConstructible as well as
+CopyConstructible.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">Add the following requirements.<br>
+"</font><font size="2" style="font-size: 9pt" color="#000000">it
+has a public move constructor that performs a member-wise
+move."</font></font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add the MoveConstructible.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 39</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.6.16.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">There are no requires corresponding to F
+of std::function.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class F, Allocator A&gt;
+function(allocator_arg_t, const A&amp;, F);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class F, Allocator A&gt;
+function(allocator_arg_t, const A&amp;, F&amp;&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class F, Allocator
+A&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">requires CopyConstructible&lt;F&gt;
+&amp;&amp; Callable&lt;F, ArgTypes...&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">&amp;&amp; Convertible&lt;Callable&lt;F,
+ArgTypes...&gt;::result_type, R&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">function(allocator_arg_t, const A&amp;,
+F);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class F, Allocator
+A&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">requires CopyConstructible&lt;F&gt;
+&amp;&amp; Callable&lt;F, ArgTypes...&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">&amp;&amp; Convertible&lt;Callable&lt;F,
+ArgTypes...&gt;::result_type, R&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">function(allocator_arg_t, const A&amp;,
+F&amp;&amp;);</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 40</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.6.16.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Thougn it's "Allocator Aloc" at other
+places, it's "Allocator A" only std::function constructor template
+parameter.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class F, Allocator A&gt;
+function(allocator_arg_t, const A&amp;, F);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class F, Allocator A&gt;
+function(allocator_arg_t, const A&amp;, F&amp;&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class F, Allocator
+<u>Alloc</u>&gt; function(allocator_arg_t, const <u>Alloc</u>
+&amp;, F);</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">template&lt;class F, Allocator <u>Alloc</u>&gt;
+function(allocator_arg_t, const <u>Alloc</u> &amp;,
+F&amp;&amp;);</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 41</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.6.16.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">There are no requires corresponding to R
+and Args of UsesAllocator.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class R, class...
+Args&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">concept_map
+UsesAllocator&lt;function&lt;R(Args...)&gt;, Alloc&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef Alloc allocator_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;<u>Returnable</u> R,
+<u>CopyConstructible</u>... Args&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">concept_map
+UsesAllocator&lt;function&lt;R(Args...)&gt;, Alloc&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef Alloc allocator_type;</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">}</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 42</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.6.16.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">The requires are wrong.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">R require Returnable, and ArgTypes
+requires CopyConstructible by a definition of function, then it's a
+mistake to designate followings by MoveConstructible.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;MoveConstructible R,
+MoveConstructible... ArgTypes&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator==(const
+function&lt;R(ArgTypes...)&gt;&amp;, nullptr_t);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;MoveConstructible R,
+MoveConstructible... ArgTypes&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator==(nullptr_t, const
+function&lt;R(ArgTypes...)&gt;&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;MoveConstructible R,
+MoveConstructible... ArgTypes&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator!=(const
+function&lt;R(ArgTypes...)&gt;&amp;, nullptr_t);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;MoveConstructible R,
+MoveConstructible... ArgTypes&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator!=(nullptr_t, const
+function&lt;R(ArgTypes...)&gt;&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;MoveConstructible R,
+MoveConstructible... ArgTypes&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void
+swap(function&lt;R(ArgTypes...)&gt;&amp;,
+function&lt;R(ArgTypes...)&gt;&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;<u>Returnable</u> R,
+<u>CopyConstructible</u>... ArgTypes&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator==(const
+function&lt;R(ArgTypes...)&gt;&amp;, nullptr_t);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;<u>Returnable</u> R,
+<u>CopyConstructible</u>... ArgTypes&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator==(nullptr_t, const
+function&lt;R(ArgTypes...)&gt;&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;<u>Returnable</u> R,
+<u>CopyConstructible</u>... ArgTypes&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator!=(const
+function&lt;R(ArgTypes...)&gt;&amp;, nullptr_t);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;<u>Returnable</u> R,
+<u>CopyConstructible</u>... ArgTypes&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator!=(nullptr_t, const
+function&lt;R(ArgTypes...)&gt;&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;<u>Returnable</u> R,
+<u>CopyConstructible</u>... ArgTypes&gt;</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">void swap(function&lt;R(ArgTypes...)&gt;&amp;,
+function&lt;R(ArgTypes...)&gt;&amp;);</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+208</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.6.17</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">std::hash should be implemented for much more of
+the standard library. In particular for pair, tuple and all the
+standard containers.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+209</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.7</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Smart
+pointers cannot be used in constrained templates</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Provide constraints for smart pointers</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+213</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.7.6</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">std::allocator should be constrained to simplify
+its use on constrained contexts. This library component models
+allocation from free store via the new operator so choose
+constraints to match. The Allocator concept allows for a wider
+variety of allocators that users may choose to supply if their
+allocation model does not require operator new, without impacting
+the requirements of this template.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The primary
+allocator template should be constrained to require
+ObjectType&lt;T&gt; and FreeStoreAllocatable&lt;T&gt;. Further
+operations to be constrained as required.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+214</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.7.8</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">raw_storage_iterator needs constraining as an
+iterator adaptor to be safely used in constrained templates</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Constrain the
+raw_storage_iterator template</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+210</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.7.11</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Specialized
+algorithms for memory managenment need requirements to be easily
+usable in constrained templates</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Provide constraints for all algorithms in
+20.7.11</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-20</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.7.12</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-20 The section heading
+and the first sentence use the term "template function", which is
+undefined.</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Replace "template function"
+by "function template".</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 72</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.7.12</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bind should support move-only functors
+and bound arguments.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-21</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.7.12.1.3</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-21 The specification
+for bind claims twice that "the values and types for the bound
+arguments v1, v2, ..., vN are determined as specified below". No
+such specification appears to exist.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Add the missing
+specification in the same section, or add a cross-reference
+indicating the section where the specification appears.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+211</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.7.12.2.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The nullptr_t type was introduced to resolve the
+null pointer literal problem. It should be used for the assignemnt
+operator, as with the constructor and elsewhere through the
+library.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change
+signature here and in the synopsis to: unique_ptr&amp;
+operator=(nullptr_t); Strike the sentance an note before the
+Effects clause.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+212</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.7.13.7</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The pointer-safety API is nothing to do with smart
+pointers, so does not belong in 20.7.13. In fact it is a set of
+language support features are really belongs in clause 18, with the
+contents declared in a header that deals with language-support of
+memory management.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move this
+specification to 18.5. Move the declarations into the header
+&lt;new&gt;.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-22</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.7.16.2</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">DE-22 The conditions for
+deriving from std::unary_function and std::binary_function are
+unclear: The condition would also be satisfied if ArgTypes were
+std::vector&lt;T1&gt;, because it (arguably) "contains" T1.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Consider stating the
+conditions in normative prose instead of in comments in the class
+definition. Use "consists of" instead of "contains". Consider using
+"if and only if" instead of "iff".</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 73</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">20.7.18</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">The
+std::reference_closure template is redundant with std::function and
+should be removed.</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">std::reference_closure is
+a premature optimization that provides a limited subset of the
+functionality of std::function intended to improve performance in a
+narrow use case. However, the &#8220;parallel application
+performance&#8221; benchmark used to motivate the inclusion of
+std::reference_closure was flawed in several ways:</font>
+<ol start="3">
+<li>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">it failed to enable a
+common optimization in std::function (implemented by all vendors),
+exacting a large and unrealistic penalty for copying std::function
+instances, and</font>
+<li>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">it failed to account for
+parallel scheduler overhead or realistically-sized work units, both
+of which would dominate the costs measured by the benchmark in any
+realistic application.</font></ol>
+<p align="left" style="margin-left: 0.25in"><br>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Remove 20.7.18
+[func.referenceclosure].</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Remove 5.1.1 paragraph 12.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 74</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">20.8</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Scoped allocators
+represent a poor trade-off for standardization, since (1)
+scoped-allocator--aware containers can be implemented outside the
+C++ standard library but used with its algorithms, (2) scoped
+allocators only benefit a tiny proportion of the C++ community
+(since few C++ programmers even use today&#8217;s allocators), and
+(3) all C++ users, especially the vast majority of the C++
+community that won&#8217;t ever use scoped allocators are forced to
+cope with the interface complexity introduced by scoped allocators.
+In essence, the larger community will suffer to support a very
+small subset of the community who can already implement their own
+data structures outside of the standard library. Therefore, scoped
+allocators should be removed from the working paper.</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Some evidence of the
+complexity introduced by scoped allocators:</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">20.3.3, 20.5: large
+increase in the number of pair and tuple constructors</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">23: confusing
+&#8220;AllocatableElement&#8221; requirements throughout.</font>
+<p align="left"><br>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Remove support for scoped
+allocators from the working paper. This includes at least the
+following changes:</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Remove 20.8.3
+[allocator.element.concepts]</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Remove 20.8.7
+[allocator.adaptor]</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Remove 20.8.10
+[construct.element]</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">In Clause 23: replace
+requirements naming the AllocatableElement concept with
+requirements naming CopyConstructible, MoveConstructible,
+DefaultConstructible, or Constructible, as appropriate.</font>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 74</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.8.2.2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">(a) synopsis (b) after
+&#182; 14</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te/ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">A concept name is twice
+misspelled.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Change
+&#8220;Hasconstructor&#8221; to &#8220;HasConstructor&#8221;
+(twice).</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 75</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.8.2.2</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Allocator concepts are
+incomplete</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">See paper:
+http://www.halpernwightsoftware.com/WG21/n2810_allocator_defects.pdf>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 43</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.8.3</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">"alloc" should be "Alloc"</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">auto concept UsesAllocator&lt;typename
+T, typename Alloc&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">requires Allocator&lt;alloc&gt;;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typename allocator_type =
+T::allocator_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">auto concept UsesAllocator&lt;typename
+T, typename Alloc&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">requires
+Allocator&lt;<u>Alloc</u>&gt;;</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">typename allocator_type =
+T::allocator_type;</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+215</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">20.8.3.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6,8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Extra pair of {}, presumably some formatting code
+gone awry : duration&amp; operator-{-}();</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove the {}
+or fix formatting</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 77</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">20.8.4</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Allocator-specific move
+and copy behavior for containers (N2525) complicates a little-used
+and already-complicated portion of the standard library
+(allocators), and breaks the conceptual model of move-constructor
+and move-assignment operations on standard containers being
+efficient operations. The extensions for allocator-specific move
+and copy behavior should be removed from the working paper.</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">With the introduction of
+rvalue references, we are teaching programmers that moving from a
+standard container (e.g., a vector&lt;string&gt;) is an efficient,
+constant-time operation. The introduction of N2525 removed that
+guarantee; depending on the behavior of four different traits
+(20.8.4), the complexity of copy and move operations can be
+constant or linear time. This level of customization greatly
+increases the complexity of standard containers, and benefits only
+a tiny fraction of the C++ community.</font>
+<p align="left"><br>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Remove 20.8.4.</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Remove 20.8.5.</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Remove all references to the facilities in
+20.8.4 and 20.8.5 from clause 23.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 78</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.8.12, 20.8.13.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style="font-size: 9pt">There is
+presently no way to convert directly from a</font>
+<code><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">shared_ptr</font></code> <font size="2" style=
+"font-size: 9pt">to a</font> <code><font size="2" style=
+"font-size: 9pt" face=
+"Arial, sans-serif">unique_ptr</font></code><font size="2" style=
+"font-size: 9pt">.</font></font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">Add an interface that performs the conversion. See
+the attached, Issues with the C++ Standard" paper under Chapter 20,
+"Conversion from</font> <code><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">shared_ptr</font></code> <font size="2"
+style="font-size: 9pt">to</font> <code><font size="2" style=
+"font-size: 9pt" face=
+"Arial, sans-serif">unique_ptr".</font></code></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 79</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.8.12.2.1</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">[unique.ptr.single.ctor]/5 no longer
+requires for D not to be a pointer type. &nbsp;This restriction
+needs to be put back in. &nbsp;Otherwise we have a run time failure
+that could have been caught at compile time:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">unique_ptr&lt;int, void(*)(void*)&gt;
+p(malloc(sizeof(int))); &nbsp;// should not compile</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">unique_ptr&lt;int, void(*)(void*)&gt;
+p(malloc(sizeof(int)), free); &nbsp;// ok</font>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 44</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.8.13.6</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The 1st parameter p and 2nd parameter v
+is now shared_ptr&lt;T&gt; *.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">It should be shared_ptr&lt;T&gt;&amp;,
+or if these are shared_ptr&lt;T&gt;* then add the "p shall not be a
+null pointer" at the requires.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Change shared_ptr&lt;T&gt;&amp; or add
+the "p shall not be a null pionter" at the requires.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 45</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.9</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Rep, Period, Clock and Duration don't
+correspond to concept.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class Rep, class Period =
+ratio&lt;1&gt;&gt; class duration;</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">template &lt;class Clock, class Duration =
+typename Clock::duration&gt; class time_point;</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Make concept for Rep, Period, Clock and
+Duration, and fix 20.9 and wait_until and wait_for's template
+parameter at 30.</font>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 80</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.9.2.1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Heading</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The section heading does
+not describe the contents.</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Change the heading
+&#8220;<span lang="en-US">is_floating_point</span>&#8221; to
+&#8220;<span lang="en-US">treat_as_floating_point</span>&#8221;.
+Optionally adjust the section&#8217;s label similarly.</font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">US 81</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">20.9.3</font>
+<td>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">chrono::duration is missing the modulous
+operator for both member and non-member arithmetic. This operator
+is useful for finding the position of a duration within a bounded
+time frame. Having it be built in to duration is safer than
+requiring the client to extract and operate directly on the
+duration&#8217;s representation as the latter will not enforce the
+correct units of the operation.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Ex:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">milliseconds ms(...);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">microseconds us(...);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">ms % us; // microseconds</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">us % ms; // microseconds</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">ms % 5; // milliseconds</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">5 % ms; // does not compile</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Add:</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class Rep, class Period =
+ratio&lt;1&gt;&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class duration {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">...</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">duration&amp;
+operator%(const rep&amp;);</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">duration&amp;
+operator%(const duration&amp;);</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">..</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">};</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">template &lt;class Rep1,
+class Period,</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">class Rep2&gt;</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">duration&lt;typename
+common_type&lt;</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">Rep1, Rep2&gt;::type,
+Period&gt;</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">operator%(const
+duration&lt;Rep1, Period&gt;&amp; d, const Rep2&amp; s);</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">template &lt;class Rep1,
+class Period1,</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">class Rep2, class
+Period2&gt;</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">typename
+common_type&lt;duration&lt;Rep1, Period1&gt;, duration&lt;Rep2,
+Period2&gt;&gt;::type</font>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt" face="Arial, sans-serif">operator%(const
+duration&lt;Rep1, Period1&gt;&amp; lhs, const duration&lt;Rep2,
+Period2&gt;&amp; rhs);</font>
+<p align="left"><br>
+<td>
+<p align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 82</font>
+<td>
+<p><font size="2" style="font-size: 9pt">20.9.5.3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">after &#182; 1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The code synopsis has a
+minor alignment error.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Align &#8220;rep&#8221;
+with the other symbols defined in this synopsis.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+216</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">21</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">All the
+containers use concepts for their iterator usage, exect for
+basic_string. This needs fixing.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Use concepts
+for iterator template parameters throughout the chapter.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 46</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">21.2, 21.3</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">The basic_string does not use
+concept.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The "class Alloc" is changed to
+"Allocator Alloc".</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The "class InputIterator" is changed to
+"InputIterator Iter".</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 21.3, basic_string:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits =
+char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>Allocator</u> Alloc =
+allocator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class basic_string;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">operator+(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">operator+(basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;
+lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">operator+(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">operator+(basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;
+lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">operator+(const charT* lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">operator+(const charT* lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">operator+(charT lhs, const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">operator+(charT lhs,
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">operator+(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const charT* rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">operator+(basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;
+lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const charT* rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">operator+(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs, charT
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">operator+(basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;&amp;
+lhs, charT rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator==(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator==(const charT* lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator==(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const charT* rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator!=(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator!=(const charT* lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator!=(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const charT* rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&lt; (const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&lt; (const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const charT* rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&lt; (const charT*
+lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&gt; (const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&gt; (const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const charT* rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&gt; (const charT*
+lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&lt;=(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&lt;=(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const charT* rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&lt;=(const charT*
+lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&gt;=(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&gt;=(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const charT* rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">bool operator&gt;=(const charT*
+lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 21.3.8.8: swap</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void
+swap(basic_string&lt;charT,traits,Alloc&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,Alloc&gt;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void
+swap(basic_string&lt;charT,traits,Alloc&gt;&amp;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,Alloc&gt;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void
+swap(basic_string&lt;charT,traits,Alloc&gt;&amp; lhs,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,Alloc&gt;&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 21.3.8.9: inserters and
+extractors</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_istream&lt;charT,traits&gt;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp;&amp;
+is,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;
+str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_ostream&lt;charT,
+traits&gt;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">operator&lt;&lt;(basic_ostream&lt;charT,
+traits&gt;&amp;&amp; os,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_istream&lt;charT,traits&gt;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">getline(basic_istream&lt;charT,traits&gt;&amp;&amp;
+is,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;
+str,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">charT delim);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_istream&lt;charT,traits&gt;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">getline(basic_istream&lt;charT,traits&gt;&amp;&amp;
+is,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp;
+str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 21.3 Class template
+basic_string</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT, class traits =
+char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>Allocator Alloc</u> =
+allocator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class basic_string {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// types:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef traits traits_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename traits::char_type
+value_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef <u>Alloc</u>
+allocator_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename <u>Alloc</u>::size_type
+size_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename
+<u>Alloc</u>::difference_type difference_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename <u>Alloc</u>::reference
+reference;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename
+<u>Alloc</u>::const_reference const_reference;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename <u>Alloc</u>::pointer
+pointer;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename
+<u>Alloc</u>::const_pointer const_pointer;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef implementation-defined iterator;
+// See 23.1</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef implementation-defined
+const_iterator; // See 23.1</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef
+std::reverse_iterator&lt;iterator&gt; reverse_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef
+std::reverse_iterator&lt;const_iterator&gt;
+const_reverse_iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">static const size_type npos = -1;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 21.3.2 construct/copy/destroy:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit basic_string(const
+<u>Alloc</u>&amp; a = <u>Alloc</u>());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string(const basic_string&amp;
+str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string(basic_string&amp;&amp;
+str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string(const basic_string&amp;
+str, size_type pos, size_type n = npos,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const <u>Alloc</u>&amp; a =
+<u>Alloc</u>());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string(const charT* s,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">size_type n, const <u>Alloc</u>&amp; a =
+<u>Alloc</u>());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string(const charT* s, const
+<u>Alloc</u>&amp; a = <u>Alloc</u>());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string(size_type n, charT c, const
+<u>Alloc</u>&amp; a = <u>Alloc</u>());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;<u>InputIterator</u>
+<u>Iter</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string(<u>Iter</u> begin,
+<u>Iter</u> end,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const <u>Alloc</u>&amp; a =
+<u>Alloc</u>());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string(initializer_list&lt;charT&gt;, const
+<u>Alloc</u>&amp; = <u>Alloc</u>());</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string(const basic_string&amp;,
+const <u>Alloc</u>&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string(basic_string&amp;&amp;,
+const <u>Alloc</u>&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">~basic_string();</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; operator=(const
+basic_string&amp; str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp;
+operator=(basic_string&amp;&amp; str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; operator=(const charT*
+s);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; operator=(charT
+c);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp;
+operator=(initializer_list&lt;charT&gt;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 21.3.3 iterators:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 21.3.4 capacity:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 21.3.5 element access:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 21.3.6 modifiers:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; append(const
+basic_string&amp; str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; append(const
+basic_string&amp; str, size_type pos,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">size_type n);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; append(const charT* s,
+size_type n);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; append(const charT*
+s);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; append(size_type n,
+charT c);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;<u>InputIterator</u>
+<u>Iter</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; append(<u>Iter</u>
+first, <u>Iter</u> last);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp;
+append(initializer_list&lt;charT&gt;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void push_back(charT c);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; assign(const
+basic_string&amp; str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp;
+assign(basic_string&amp;&amp; str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; assign(const
+basic_string&amp; str, size_type pos,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">size_type n);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; assign(const charT* s,
+size_type n);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; assign(const charT*
+s);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; assign(size_type n,
+charT c);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;<u>InputIterator</u>
+<u>Iter</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; assign(<u>Iter</u>
+first, <u>Iter</u> last);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp;
+assign(initializer_list&lt;charT&gt;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; insert(size_type pos1,
+const basic_string&amp; str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; insert(size_type pos1,
+const basic_string&amp; str,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">size_type pos2, size_type n);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; insert(size_type pos,
+const charT* s, size_type n);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; insert(size_type pos,
+const charT* s);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; insert(size_type pos,
+size_type n, charT c);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">iterator insert(const_iterator p, charT
+c);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void insert(const_iterator p, size_type
+n, charT c);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;<u>InputIterator</u>
+<u>Iter</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void insert(const_iterator p,
+<u>Iter</u> first, <u>Iter</u> last);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void insert(const_iterator p,
+initializer_list&lt;charT&gt;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(size_type
+pos1, size_type n1,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const basic_string&amp; str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(size_type
+pos1, size_type n1,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const basic_string&amp; str,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">size_type pos2, size_type n2);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(size_type pos,
+size_type n1, const charT* s,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">size_type n2);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(size_type pos,
+size_type n1, const charT* s);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(size_type pos,
+size_type n1, size_type n2,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">charT c);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(iterator i1,
+iterator i2,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const basic_string&amp; str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(iterator i1,
+iterator i2, const charT* s,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">size_type n);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(iterator i1,
+iterator i2, const charT* s);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(iterator i1,
+iterator i2,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">size_type n, charT c);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;<u>InputIterator</u>
+<u>Iter</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(iterator i1,
+iterator i2,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>Iter</u> j1, <u>Iter</u> j2);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_string&amp; replace(iterator,
+iterator, initializer_list&lt;charT&gt;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 21.3.7 string operations:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator</u> <u>Alloc&gt;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">struct
+constructible_with_allocator_suffix&lt;</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">basic_string&lt;charT, traits, <u>Alloc</u>&gt;
+&gt; : true_type { };</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 47</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">21.3</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo. Missing &#8221;&gt;&#8221;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+Allocator Alloc</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+Allocator Alloc&gt;</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Correct typo.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 48</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">21.3</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">char_traits does not use concept.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">For example, create CharTraits concept
+and change as follows:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class charT,
+<u>CharTraits</u> traits = char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class Allocator = allocator&lt;charT&gt;
+&gt;</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">class basic_string {</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add a concept for char_traits.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+217</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">21.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">basic_string
+refers to constructible_with_allocator_suffix, which I thought was
+removed?</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Remove the lines: template &lt;class charT, class
+traits, class Alloc struct constructible_with_allocator_suffix&lt;
+basic_string&lt;charT, traits, Alloc&gt; &gt; : true_type {
+};</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+218</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">21.3.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The identity "&amp;*(s.begin() + n) ==
+&amp;*s.begin() + n" relies on operator&amp; doing the "right
+thing", which (AFAICS) there is no requirement for. See my comment
+under clauses "23.2.1, 23.2.6" (p1 in both cases) - this is the
+same issue, but I've created a separate comment for basic_string
+because it is in a different chapter.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">See my
+recommendations for "23.2.1, 23.2.6".</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+219</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">21.3.6.6
+[string.replace]</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Effects
+refers to "whose first begin() - i1 elements" However i1 is greater
+than begin()...</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Effects
+refers to "whose first i1 - begin() elements"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+220</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">21.3.8.9</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The operator&lt;&lt; for basic_string takes the
+output stream by r-value reference. This is different from the same
+operator for error_code (19.4.2.6), bitset (20.2.6.3), shared_ptr
+(20.7.13.2.8), complex (26.3.6) and sub_match (28.4)</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Use the same
+reference type for the all the library types. This should be the
+r-value reference. There are other places in the standard where
+TR1, and new classes, did not receive an 'R-value' update.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 33</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">22.1.1 [locale]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">ios_base::iostate err = 0;</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">iostate is a bitmask type and so could be
+an enumeration. Probably using</font>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">goodbit is the solution.</font>
+<td>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 49</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">22.1.3.2.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">codecvt does not use concept. For
+example, create CodeConvert concept and change as follows.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">template&lt;<u>CodeConvert</u> Codecvt,
+class Elem = wchar_t&gt; class wstring_convert {</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add a concept for codecvt.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 50</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">22.1.3.2.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add custom allocator parameter to
+wstring_convert, since we cannot allocate memory for strings from a
+custom allocator.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class Codecvt, class Elem =
+wchar_t&gt; class wstring_convert {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef std::basic_string&lt;char&gt;
+byte_string;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef std::basic_string&lt;Elem&gt;
+wide_string;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style=
+"text-indent: 0.06in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class Codecvt, class Elem =
+wchar_t<u>,</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>Allocator WideAllocator =
+allocator&lt;Elem&gt;,</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>Allocator ByteAllocator =
+allocator&lt;char&gt;</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class wstring_convert {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef std::basic_string&lt;char,
+<u>char_traits&lt;char&gt;, ByteAllocator</u>&gt;
+byte_string;</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">typedef std::basic_string&lt;Elem,
+<u>char_traits&lt;Elem&gt;, WideAllocator</u>&gt;
+wide_string;</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FI 4</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">22.2.1.4.1</font>
+<p><font size="2" style="font-size: 9pt">22.2.1.4.2</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p><font size="2" style="font-size: 9pt"><tt><font face=
+"Arial, sans-serif">to_end and to_limit are both used. Only one is
+needed.</font></tt></font>
+<td>
+<p><font size="2" style="font-size: 9pt">Change to_limit to
+to_end.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FI 5</font>
+<td>
+<p><font size="2" style="font-size: 9pt"><tt><font face=
+"Arial, sans-serif">22.2.1.4.2</font></tt></font>
+<td>
+<p><font size="2" style="font-size: 9pt">#3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt"><tt><font face=
+"Arial, sans-serif">[ Note: As a result of operations on state, it
+can return ok or partial and set next == from and to_next != to.
+&#8212;end note ]</font></tt><br></font><br>
+<br>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt"><tt><font face=
+"Arial, sans-serif">"next" should be
+"from_next."</font></tt></font>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt"><tt><font face=
+"Arial, sans-serif">Also, the sentence applies to all the examples,
+including do_in and do_out.</font></tt></font>
+<p><font size="2" style="font-size: 9pt"><tt><font face=
+"Arial, sans-serif">Reasoning: When reading one element of
+multibyte source data such as UTF-8, it is possible that from_next
+is incremented, to_next is unaltered, state is altered and return
+value is partial.<br>
+When reading one element of wide character data, the output can be
+several multibyte characters, so it is possible that from_next is
+unaltered, to_next is advanced, state is altered and return value
+is partial.</font></tt></font>
+<td>
+<p><font size="2" style="font-size: 9pt"><tt><font face=
+"Arial, sans-serif">[ Note: As a result of operations on state,
+do_in and do_out can return</font></tt><br>
+<tt><font face="Arial, sans-serif">ok or partial and set from_next
+== from and/or to_next != to. &#8212;end</font></tt><br>
+<tt><font face="Arial, sans-serif">note ]</font></tt></font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FI 6</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">22.2.1.5</font>
+<p><font size="2" style="font-size: 9pt">See also 22.2.1.4
+(1,2,3)</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt"><tt><font face=
+"Arial, sans-serif">codecvt_byname is only specified to work with
+locale names. There is no built-in means to find a codecvt with a
+character set's name. A locale and a character set are not the
+same. If the user has data which is encoded in a certain character
+set and she wants to create a codecvt which can convert from that
+character set to another one, she must iterate through locales to
+find one, or use external means (iconv, ICU's uconv). Specifying a
+locale with the character set is not a suitable solution, since
+there is no built-in mapping from character sets to locales. It is
+only possible to inquire the character set once the locale is
+known.</font></tt></font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt"><tt><font face=
+"Arial, sans-serif">There should be a built-in means to find a
+codecvt with a pair of character set names.</font></tt></font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FI 7</font>
+<td>
+<p><font size="2" style="font-size: 9pt">22.2.1.4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1,2,3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">The word "codeset" is used,
+whereas the word "character set" is used elsewhere in the text. The
+words are intended to convey the same concept, so only one should
+be used (or always both together).</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Change "codeset" to
+"character set."</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 51</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">22.2.5.1.1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">7</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">A parameter `end&#8217; should be
+`fmtend&#8217;.<br>
+get() function had two `end&#8217; parameters at N2321.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">iter_type get (iter_type s, iter_type
+end, ios_base&amp; f, ios_base::iostate&amp; err, tm* t, const
+char_type* fmt, const char_type *end) const;</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">The function prototype of get() has been corrected
+at N2800, but a Requires statement still refers `end&#8217;
+parameter.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Requires: [fmt,end) shall be a valid
+range.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><br>
+<br>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Requires: [fmt,fmtend) shall be a valid
+range.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 52</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">22.2.5.1, 22.2.5.2, 22.2.6.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">InputIterator does not use
+concept.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">22.2.5.1</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class
+InputIterator = istreambuf_iterator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class time_get : public locale::facet,
+public time_base {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef InputIterator iter_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT,
+<u>InputIterator InputIter</u> = istreambuf_iterator&lt;charT&gt;
+&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class time_get : public locale::facet,
+public time_base {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef <u>InputIter</u>
+iter_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">22.2.5.2</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class
+InputIterator = istreambuf_iterator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class time_get_byname : public
+time_get&lt;charT, InputIterator&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef time_base::dateorder
+dateorder;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef InputIterator iter_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT,
+<u>InputIterator InputIter</u> = istreambuf_iterator&lt;charT&gt;
+&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class time_get_byname : public
+time_get&lt;charT, InputIter&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef time_base::dateorder
+dateorder;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef <u>InputIter</u>
+iter_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">22.2.6.1</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class InputIterator =
+istreambuf_iterator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class money_get : public locale::facet
+{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef InputIterator iter_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>InputIterator InputIter</u> =
+istreambuf_iterator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class money_get : public locale::facet
+{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef <u>InputIter</u>
+iter_type;</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 53</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">22.2.5.3 , 22.2.5.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">OutputIterator does not use
+concept.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">22.2.5.3</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class
+OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class time_put : public locale::facet
+{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef OutputIterator iter_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt" face="Arial, sans-serif"><span lang=
+"zxx">&#12288;</span></font><font size="2" style=
+"font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT,
+<u>OutputIterator OutputIter</u> = ostreambuf_iterator&lt;charT&gt;
+&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class time_put : public locale::facet
+{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef <u>OutputIter</u>
+iter_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">22.2.5.4</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class
+OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class time_put_byname : public
+time_put&lt;charT, OutputIterator&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef OutputIterator iter_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT,
+<u>OutputIterator OutputIter</u> = ostreambuf_iterator&lt;charT&gt;
+&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class time_put_byname : public
+time_put&lt;charT, OutputIter&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">typedef <u>OutputIter</u> iter_type;</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 54</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">23</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">2</font><sup><font size="2" style=
+"font-size: 9pt">nd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, Table 79</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">There is not &lt;forward_list&gt; in
+Table 79.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add &lt;forward_list&gt; between
+&lt;deque&gt; and &lt;list&gt;.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+221</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">23</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Table
+79</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The table is
+missing the new &lt;forward_list&gt; header.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add &lt;forward_list&gt; to the table for sequence
+containers. Alternative (technical) solution might be to merge
+&lt;forward_list&gt; into &lt;list&gt;.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+222</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">23</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is not clear what purpose the Requirement
+tables serve in the Containers clause. Are they the definition of a
+library Container? Or simply a conventient shorthand to factor
+common semantics into a single place, simplifying the description
+of each subsequent container? This becomes an issue for
+'containers' like array, which does not meet the
+default-construct-to-empty requirement, or forward_list which does
+not support the size operation. Are these components no longer
+containers? Does that mean the remaining requirements don't apply?
+Or are these contradictions that need fixing, despite being a clear
+design decision?</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Clarify all
+the tables in 23.1 are there as a convenience for documentation,
+rather than a strict set of requirements. Containers should be
+allowed to relax specific requirements if they call attention to
+them in their documentation. The introductory text for array should
+be expanded to mention a default constructed array is not empty,
+and forward_list introduction should mention it does not provide
+the required size operation as it cannot be implemented
+efficiently.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 55</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">23.1.1</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">3</font><sup><font size="2" style=
+"font-size: 9pt">rd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 4</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">It seems that &#8220;the
+MinimalAllocator concep&#8221; is the typo of &#8220;the
+MinimalAllocator concept&#8221;.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">Change to &#8230; models the MinimalAllocator
+concep</font><font size="2" style="font-size: 9pt" color=
+"#339966">t</font><font size="2" style=
+"font-size: 9pt">.</font></font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+223</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The library does not define the MinimalAllocator
+or ScopedAllocator concepts, these were part of an earlier
+Allocators proposal that was rejected.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove the
+references to MinimalAllocator and ScopedAllocator, or add
+definitions for these concepts to clause 20.7.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+224</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">This
+paragraph implicitly requires all containers in clause 23 to
+support allocators, which std::array does not.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add an 'unless otherwise specified' rider
+somewhere in p8, or move the whole array container from clause 23
+[containers] to clause 20 [utilies] to accompany bitset, pair and
+tuple.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+225</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Table
+81</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Inconsistent words used to say the same thing.
+Table 80 describes iterator/const_iterator typedef as returning an
+"iterator type whose value type is T". Table 81 expresses the same
+idea as an "iterator type pointing to T". Express identical ideas
+with the same words to avoid accidentally introducing subtlety and
+confusion</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change return
+types for X::(const)_reverse_iterator to say "iterator type whose
+value type is (const) T".</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+226</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">10</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">&lt;array&gt; must be added to this list. In
+particular it doesn't satisfy: - no swap() function invalidates any
+references, pointers, or iterators referring to the elements of the
+containers being swapped. and probably doesn't satisfy: &#8212; no
+swap() function throws an exception.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">If
+&lt;array&gt; remains a container, this will have to also reference
+array, which will then have to say which of these points it
+satisfies.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+227</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Table
+80</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The
+post-condition for a = rv uses the word &#8220;construction&#8221;
+when it means &#8220;assignment&#8221;</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Replace the word &#8220;construction&#8221; with
+the word &#8220;assignment&#8221;</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+228</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Line 4 contains a spelling mistake in the fragment
+"MinimalAllocator concep."</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+"concep" with "concept"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+229</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The fragment
+"A container may directly call constructors" is not technically
+correct as constructors are not callable.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Replace "A container may directly call
+constructors and destructors for its stored objects" with something
+similar to "A container may directly construct its stored objects
+and call destructors for its stored objects"</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+230</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in">&#8220;<font size="2"
+style="font-size: 9pt">implementations shall consider the following
+functions to be const&#8221; - what does this mean? I don't
+understand what it means by implementations considering the
+functions to be const &#8211; surely they are either declared const
+or not?</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Clarify what
+is meant and what requirements an implementation must
+satisfy.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 56</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">23.1.3</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">12</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, Table 84</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">`array&#8217; is unstated in Table 84 -
+Optional sequence container operations.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Add `array&#8217; to Container field for
+the following Expression.</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.15in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">a.front()</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.15in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">a.back()</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.15in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">a[n]</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.15in; margin-top: 0.04in"><font size="2" style=
+"font-size: 9pt">a.at(n)</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+231</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.3</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">9-11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">These paragraphs are redundant now that Concepts
+define what it means to be an Iterator and guide overload
+resolution accordingly.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike
+23.1.3p9-11. Make sure std::basic_string has constraints similar to
+std::vector to meet this old guarantee.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+232</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Table
+84</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">match_results may follow the requirements but is
+not listed a general purpose library container.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove
+reference to match_results against a[n] operation</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+233</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Table
+84</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+references to the new containers.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add reference to array to the rows for: a.front(),
+a. back(), a[n] a.at(n). Add reference to forward_list to the rows
+for: a.front(), a.emplace_front(args), a.push_front(t),
+a.push_front(rv), a.pop_front(). Add reference to basic_string to
+the row for: a.at(n).</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+234</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Table
+84</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Ther reference to iterator in semantics for back
+should also allow for const_iterator when called on a
+const-qualified container. This would be ugly to specify in the 03
+standard, but is quite easy with the addition of auto in this new
+standard.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+iterator with auto in semantics for back: { auto tmp = a.end();
+--tmp; return *tmp; }</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+235</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left">&#8220;<font size="2" style="font-size: 9pt">The
+library provides three basic kinds of sequence containers: vector,
+list, and deque&#8221; - text appears to be out of date re addition
+of array and forward_list</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Change the text to read: &#8220;The library
+provides five basic kinds of sequence containers: array, deque,
+forward_list, list and vector&#8221;.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+236</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">[ I've moved (1) into a separate comment because I
+believe it is editorial in the simple sense, whereas (2) and (3)
+are not so straight forward ] (2) &#8220;vector is the type of
+sequence container that should be used by default&#8221; -- As I
+understand it vector was considered first port of call because the
+things it has in common with the native array make programmers
+(especially those new to the container library) feel like they are
+on familiar territory. However, we now have the array container, so
+I think this should be recommended as the first port of call. (3)
+This paragraph is actually giving guidance on the use of the
+containers and should not be normative text</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove this
+paragraph</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+237</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">vector, list,
+and deque offer the programmer different complexity trade-offs and
+should be used accordingly - this ignores array and
+forward_list</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Modify the text to read: "array, deque,
+forward_list, list and vector offer the programmer different
+complexity trade-offs and should be used accordingly"</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+238</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Leaving it unspecified whether or not iterator and
+const_iterator are the same type is dangerous, as user code may or
+may not violate the One Definition Rule by providing overloads for
+both types. It is probably too late to specify a single behaviour,
+but implementors should document what to expect. Observing that
+problems can be avoided by users restricting themselves to using
+const_iterator, add a note to that effect.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change
+'unspecified' to 'implementation defined'. Add "[Note: As
+itererator and const_iterator have identical semantics in this
+case, and iterator is convertible to const_iterator, users can
+avoid violating the One Definition Rule by always using
+const_iterator in their function parameter lists -- end
+note]</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+239</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">85</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">It is not
+possible to take a move-only key out of an unordered container,
+such as (multi)set or (multi)map, or the new hashed
+containers.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add below a.erase(q), a.extract(q), with the
+following notation: a.extract(q), Return type pair&lt;key,
+iterator&gt; Extracts the element pointed to by q and erases it
+from the set. Returns a pair containing the value pointed to by q
+and an iterator pointing to the element immediately following q
+prior to the element being erased. If no such element
+exists,returns a.end().</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+240</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.1.6.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">12</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The axiom EmplacePushEquivalence should be
+asserting the stronger contract that emplace and insert return the
+same iterator value, not just iterators that dereference to the
+same value. This is a similar statement that is easier to express
+and should be equivalent - the idea that insert and emplace might
+return iterator values that do not compare equal but point to the
+same element should fail somewhere in the iterator concepts. Also,
+this axiom should be renamed to reflect its connection with insert,
+rather than push_front/push_back,</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove the *
+to deference the returned iterator either side of the == in the
+EmplacePushEquivalence axiom, rename the axiom
+EmplacementInsertionEquivalence : requires
+InsertionContainer&lt;C&gt; &amp;&amp; Constructible&lt;value_type,
+Args...&gt; axiom EmplacementInsertionEquivalence(C c,
+const_iterator position, Args... args) { emplace(c, position,
+args...) == insert(c, position, value_type(args...)); }</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 57</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">23.1.6.3</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 4</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo, duplicated "to"</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">"<u>to to</u> model insertion container
+concepts."</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Remove one.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+241</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.2.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">std::array does not have an allocator, so need to
+document an exception to the requirements of 23.1.1p3</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">add exception
+to 23.1.1p3</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+242</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.2.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">std::
+qualification no longer needed for reverse_iterator.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">remove std:: qualification from
+std::reverse_iterator&lt;iterator&gt; and
+std::reverse_iterator&lt;const_iterator&gt;</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+243</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.2.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Most containers, and types in general have 3
+swaps: swap(T&amp;, T&amp;) swap(T&amp;&amp;, T&amp;) swap(T&amp;,
+T&amp;&amp;) But array only has swap(T&amp;, T&amp;).</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">add the other
+two swaps.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+244</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">23.2.1,
+23.2.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The validity of the expression &amp;a[n] ==
+&amp;a[0] + n is contingent on operator&amp; doing the &#8220;right
+thing&#8221; (as captured by the CopyConstructible requirements in
+table 30 in C++2003). However this constraint has been lost in the
+Concepts of C++0x. This applies to vector and array (it actually
+applies to string also, but that's a different chapter, so I'll
+file a separate comment there and cross-reference).</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Define a
+ContiguousStrorage and apply it to vector,array and string. The
+Concept (supplied by Alisdair M) looks like this: Concept&lt;
+typename C &gt; ContiguousStrorage { requires Container&lt;C&gt;;
+typename value_type = C::value_type; value_type * data( C ); axiom
+Contiguous { C c; true = equal_ranges( data( c), data(c) + size(c),
+begin(c)); } };</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+245</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.2.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The predicate
+types used in special member function of forward_list should be
+CopyConstructible, as per the algorithms of the same name. Note: an
+alternate solution would be to require these callable concepts to
+be CopyConstructible in clause 20, which would simplify the library
+specification in general. See earlier comment for details, that
+would render this one redundant.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add CopyConstructible requirement to the following
+signatures: template &lt;Predicate&lt;auto, T&gt; Pred&gt; requires
+CopyConstructible&lt;Pred&gt; void remove_if(Pred pred); template
+&lt;EquivalenceRelation&lt;auto, T&gt; BinaryPredicate&gt; requires
+CopyConstructible&lt;BinaryPredicate&gt; void
+unique(BinaryPredicate binary_pred); template
+&lt;StrictWeakOrder&lt;auto, T&gt; Compare&gt; requires
+CopyConstructible&lt;Compare&gt; void
+merge(forward_list&lt;T,Alloc&gt;&amp;&amp; x, Compare comp);
+template &lt;StrictWeakOrder&lt;auto, T&gt; Compare&gt; requires
+CopyConstructible&lt;Compare&gt; void sort(Compare comp);</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 58</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">23.2.3.2</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">line before 1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Unnecessary "{" exists before a word
+iterator like "{iterator before_begin()".</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Remove "{"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 59</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">23.2.4.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Types of the third and forth parameter
+of splice() are iterator at 23.2.4.4, though types of them are
+const_iterator at 23.2.4. (They are both const_iterator on
+N2350)</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void splice(const_iterator position,
+list&lt;T,Allocator&gt;&amp;&amp; x, iterator i);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void splice(const_iterator position,
+list&lt;T,Allocator&gt;&amp;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">iterator first, iterator last);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void splice(const_iterator position,
+list&lt;T,Allocator&gt;&amp;&amp; x, const_iterator i);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void splice(const_iterator position,
+list&lt;T,Allocator&gt;&amp;&amp; x,</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">const_iterator first, const_iterator last);</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 83</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">23.2.6.2</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">7</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">"shrink_to_fint" should be
+"shrink_to_fit".</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+246</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">23.3.2.2</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The content of this sub-clause is purely trying to
+describe in words the effect of the requires clauses on these
+operations, now that we have Concepts. As such, the desctiption is
+more confusing than the signature itself. The semantic for these
+functions is adequately covered in the requirements tables in
+23.1.4.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike
+23.3.2.2 entirely. (but do NOT strike these signatures from the
+class template definition!)</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+247</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Iterator concepts are not extensive enough to
+merit a whole new header, and should be merged into
+&lt;concpts&gt;. This is particularly important for supporting the
+new for loop syntax which requires access to the Range concept. The
+required header to enable this syntax shoud have a simple name,
+like &lt;concepts&gt;, rather than something awkward to type like
+&lt;iterator_concepts&gt;.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move the
+concepts of &lt;iterator_concepts&gt; into the &lt;concepts&gt;
+header. We take no position on moving the text from Clause 24 to
+Clause 20 though.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+248</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The text "so for any iterator type there is an
+iterator value that points past the last element of a corresponding
+container" is slightly misleading. Iterators can refer into
+generalised ranges and sequences, not just containers. A broader
+term than 'container' should be used.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace the
+reference to container with a more appropriate concept</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+250</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">A default
+implementation should be supplied for the post-increment operator
+to simplify implementation of iterators by users.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Copy the
+Effects clause into the concept description as the default
+implementation. Assumes a default value for
+postincrement_result</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+251</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The post-increment operator is dangerous for a
+general InputIterator. The multi-pass guarantees that make it
+meaningful are defined as part of the ForwardIterator refinement.
+Any change will affect only constrained templates that have not yet
+been written, so should not break existing user iterators which
+remain free to add these operations. This change will also affect
+the generalised OutputIterator, although there is no percieved need
+for the post-increment operator in this case either.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move
+declaration of postincrement operator and postincrement_result type
+from Interator concept to the ForwardIterator concept</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK<br>
+252</font>
+<p><br>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style=
+"font-size: 9pt">istream_iterator is not a class, but a class
+template</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change
+'class' to 'class template' in the note.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+253</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">First sentance does not make gramatical sense,
+Seems to be missing the words 'if it' by comparison with similar
+sentance in other subsections</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add the words
+'if it' : "X satisfies the requirements of an output iterator IF IT
+meets the syntactic and semantic requirements"</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+254</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This postcondition for pre-increment operator
+should be written as an axiom</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move the
+postcondition into the concept definition as an axiom</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+255</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This postcondition for pre-increment operator
+should be written as an axiom</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move the
+postcondition into the concept definition as an axiom</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+256</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3, 4,
+5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The
+relationship between pre- and post- decrement should be expressed
+as an axiom.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Move the text specification of pre/post-conditions
+and behaviour into an axiom within the BidirectionalIterator
+concept</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+257</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">There is a reasonable default for
+postdecrement_result type, which is X. X is required to be regular,
+therefore CopyConstructible and a valid ResultType. Together with
+the next comment this simplifies user defined iterator
+implentations</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add the
+default : typename postincrement_result = X;</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+258</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">A default implementation should be supplied for
+the post-decrement operator to simplify implementation of iterators
+by users.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Copy the
+Effects clause into the concept description as the default
+implementation. Assumes a default value for
+postincrement_result</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+259</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">postdecrement_result is effectively returning a
+copy of the original iterator value, so should have similar
+constraints, rather than just HasDereference. If Concepts do not
+support this circularity of definition suggest that concepts
+feature may want a little more work</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add the
+requirement: requires Iterator&lt; postdecrement_result
+&gt;;</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+260</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The effects
+clause for post-decrement iterator should be available as an axiom
+and a default implementation, where the compiler can make better
+use of it.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Move the Effects clause into the
+BidirectionalIterator concept definition as an axiom, and as the
+default implementation for the operation.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+249</font>
+<td>
+<p lang="en-GB" align="justify"><font size="2" style=
+"font-size: 9pt"><span lang="en-US">24.1.6</span></font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The semantic for operator+= should also be
+provided as a default implementation to simplify implementation of
+user-defined iterators</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Copy the text
+from the effects clause into the RandomAccessIterator concept as
+the default implementaiton.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+261</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.6</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">To simplify user defined random access iterator
+types, the subscript_reference type should default to
+reference</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">typename
+subscript_reference = reference;</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+262</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3,
+4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Effects and
+post-conditions for operator+ are more useful if expressed as
+axioms, and supplied as default implementations.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Move the effects and Postcondition definitions
+into the RandomAccessIterator concept and copy the code in the
+specification as the default implementation of these
+operations.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+263</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">This
+requirement on operator-= would be better expressed as a default
+implementation in the concept, with a matching axiom</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Move the specification for operator-= from the
+returns clause into an axiom and default implementation within the
+RandomAccessIterator concept</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+264</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Effects
+clauses are better expressed as axioms where possible.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Move code in operator- effects clause into
+RandomAccessIterator concept as both a default implementation and
+an axiom</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+265</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This effects clause is nonesense. It looks more
+like an axiom stating equivalence, and certainly an effects clause
+cannot change the state of two arguments passed by const
+reference</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike the
+Effects clause</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+266</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">9</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">This sentance
+should be provided as a default definition, along with a matching
+axiom</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Move the Returns clause into the spefication for
+RandomAccessIterator operator- as a default implementation. Move
+the Effects clause as the matching axiom.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+267</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.6</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The code in the Requires clause for
+RandomAccessIterator operator[] would be better expressed as an
+axiom.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Rewrite the
+Requires clause as an axiom in the RandomAccessIterator
+concept</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+268</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.1.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">12</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">This note is potentialy confusing as __far enters
+the syntax as a clear language extension, but the note treats it as
+a regular part of the grammar. It might be better expressed using
+attributes in the current wording.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Clean up the
+note to either avoid using language extension, or spell out this is
+a constraint to support extensions.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 60</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">24.1.8</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Capability of an iterator is too much
+restricted by concept.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Concept of std::Range is defined
+as:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">concept Range&lt;typename T&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">InputIterator iterator;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">iterator begin(T&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">iterator end(T&amp;);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">So the following code generates an
+error.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;std::Range Rng&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void sort(Rng&amp; r)</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.08in; text-indent: -0.08in; margin-bottom: 0in">
+<font size="2" style="font-size: 9pt">// error! Rng::iterator does
+not satisfy requirements of a random</font>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.07in; text-indent: 0.08in; margin-bottom: 0in">
+<font size="2" style="font-size: 9pt">// access iterator.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::sort(begin(r), end(r));</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::vector&lt;int&gt; v; //
+vector::iterator is a random access iterator.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">sort(v);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">This is because the concept of an
+iterator of std::Range is InputIterator. For this reason, a random
+access iterator loses its capability when passed to a std::Range
+parameter.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">To be able to work the above code, we
+need to write as follows:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;std::Range T&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">requires
+std::RandomAccessIterator&lt;T::iterator&gt; &amp;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::ShuffleIterator&lt;T::iterator&gt;
+&amp;&amp;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">std::LessThanComparable&lt;T::iterator::value_type&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void sort(T&amp; r)</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">sort(begin(r), end(r));</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::vector&lt;int&gt; v;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">sort(v);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">It needs quiet a few amount of codes
+like this only to recover random access capability from
+InputIterator concept.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">We can write the following valid code
+with Boost.Range, which is implemented with using C++03
+SFINAE.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class Range&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void sort(Range&amp; r)</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::sort(boost::begin(r),
+boost::end(r));</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">std::vector&lt;int&gt; v;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">sort(v); // OK</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">One of the motivation to introduce concepts are
+supporting template programming techniques by language directly to
+eliminate hacky techniques such as tag-dispatch, SFINAE and Type
+Traints. But SFINAE will be kept using because it needs quite a few
+amount of codes without using SFAINAE.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add InputRange, OutputRange,
+ForwardRange, BidirectionalRange and RandomAccessRange.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+269</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">'decrements for negative n' seems to imply a
+negative number of decrement operations, which is odd.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Need simple,
+clearer wording</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+270</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The reachability constraint in p5 means that a
+negavite result, implying decrements operations in p4, is not
+possible</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Split the two
+overloads into separate descriptions, where reachability is
+permitted to be in either direction for RandomAccessIterator</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+271</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6,7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">next/prev return an incremented iterator without
+changing the value of the original iterator. However, even this may
+invalidate an InputIterator. A ForwardIterator is required to
+guarantee the 'multipass' property.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace
+InputIterator constraint with FOrwardIterator in next and prev
+function templates.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+272</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">reverse_iterator and move_iterator use different
+formulations for their comparison operations. move_iterator merely
+requires the minimal set of operations, &lt; and ==, from its
+underlying iterator and synthesizes all oprations from these two.
+reverse_iterator relies on the undelying iterator to support all
+comparision operations directly. In practice, move_iterator can
+only be implemented this way as it must support iterator types that
+are merely InputIterators, and so SemiRegular and not Regular.
+However, reserse_iterator has an existing specification and any
+change of semantic could change behaviour of conforming programs
+today - although an iterator that yields different results for (a
+&gt; b) than (b &lt; a) may fall foul of some semantic consistency
+requirements, even if the syntax is met.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Rephrase the
+reverse_iterator comparison operations using only operators &lt;
+and ==, as per the move_iterator specification.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+274</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">24.4,
+24.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The subclauses for standard iterator adaptors
+could be better organised. There are essentially 3 kinds of
+iterator wrappers provided, stream iterators adapt streams and get
+their own subsection. insert iterators adapt containers, and get
+their own subsection but it is inserted into the middle of 24.4
+Predifined iterators. reverse_iterator and move_iterator adpat
+other iterators, but their presentation is split by insert
+iterators</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Promote
+24.4.2 [insert.iterators] up one level to 24.6. Emphasize that
+insert iterators adapt containers Retarget 24.4 [predef.iterators]
+as iterator adapters for iterator templates that wrap other
+iterators.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+275</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.4.1.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The constructor template taking a single Iterator
+argument will be selected for Copy Initialization instead of the
+non-template constructor taking a single Iterator argument selected
+by Direct Initialization.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The
+reverse_iterator template constructor taking a single Iterator
+argument should be explicit.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+276</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.4.1.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is odd to have a mix of declaration stlyes for
+operator+ overloads. Prefer if either all are member functions, or
+all are 'free' functions.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Make the
+member operators taking a difference_type argument non-member
+operators</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+277</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.4.1.2.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The default constructor default-initializes
+current, rather than value-initializes. This means that when
+Iterator corresponds to a trivial type, the current member is left
+un-initialized, even when the user explictly requests value
+intialization! At this point, it is not safe to perform any
+operations on the reverse_iterator other than assign it a new value
+or destroy it. Note that this does correspond to the basic
+definition of a singular iterator.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">i/ Specify
+value initialization rather than default intialization or ii/
+specify = default; rather than spell out the semantic. This will at
+least allow users to select value initialization and copy the
+iterator value. or iii/ Add a note to the description emphasizing
+the singular nature of a value-initialized reserve iterator.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+278</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.4.1.2.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">There is an inconsistency between the constructor
+taking an iterator and the constructor template taking a
+reverse_iterator where one passes by value, and the other by const
+reference. The by-value form is preferred as it allows for
+efficient moving when copy elision fails to kick in.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change the
+const reverse_iterator&lt;U&gt; &amp; parameter to
+pass-by-value</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+279</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.4.1.2.12, 24.4.3.2.12</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The reason the return type became unspecified is
+LWG issue 386. This reasoning no longer applies as there are at
+least two ways to get the right return type with the new language
+facilities added since the previous standard.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Specify the
+return type using either decltype or the Iter concept map</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+280</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.4.1.2.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The presence of the second iterator value is
+surprising for many readers who underestimate the size of a
+reverse_iterator object. Adding the exposition only member that is
+required by the semantic will reduce confusion.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add
+reverse_iterator expsoition only member tmp as a comment to class
+declaration, as a private member</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+281</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.4.1.2.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The current specification for return value will
+always be a true pointer type, but reverse_iterator supports proxy
+iterators where the pointer type may be some kind of 'smart
+pointer'</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace the
+existing returns specification with a copy of the operator*
+specification that returns this-&gt;tmp.operator-&gt;</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+282</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">24.4.2.1,
+24.4.2.2.2, 24.4.2.3, 24.4.2.4.2, 24.4.2.5, 24.4.2.6.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">n/a</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Insert
+iterators of move-only types will move from lvalues</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add an
+additional constrained overload for operator= that requires
+!CopyConstructible&lt;Cont::value_type&gt; and mark it
+=delete.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+283</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">24.4.2.5,
+24.4.2.6.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">postincrement
+operator overloads traditionally return by value - insert_iterator
+is declared as return by reference. The change is harmless in this
+case, but either front/back_insert_iterator should take the
+matching change for consistency, or this function should
+return-by-value</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">change
+operator++(int) overload to return by value, not reference. Affects
+both class summary and operator definition in p</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 61</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">24.4.3.2.1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">2</font><sup><font size="2" style=
+"font-size: 9pt">nd</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">"intializing" should be
+"in<u>i</u>tializing"</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add "i"</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+284</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The stream iterators need constraining with
+concepts/requrires clauses.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Provide
+constraints</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+285</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1,2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Much of the content of p1 and the whole of p2 is a
+redundant redefinition of InputIterator. It should be
+simplified</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike p2.
+Simplify p1 and add a cross-reference to the definition of
+InputIterator concept.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+286</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">To the casual reader it is not clear if it is
+intended to be able to assign to istream_iterator objects.
+Specifying the copy constructor but relying on the implicit
+copy-assign operator is confusing.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Either
+provide a similar definition to the copy-assign operator as for the
+copy constructor, or strike the copy constructor</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+287</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is not clear what the intial state of an
+istream_iterator should be. Is _value_ initialized by reading the
+stream, or default/value initialized? If it is initialized by
+reading the stream, what happens if the initialization is deferred
+until first dereference, when ideally the iterator value should
+have been that of an end-of-stream iterator which is not safely
+dereferencable?</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Specify
+_value_ is initialized by reading the stream, or the iterator takes
+on the end-of-stream value if the stream is empty</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+288</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5.1.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The provided
+specification is vacuous, offering no useful information.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Either strike the specification of the copy
+constructor, or simply replace it with an = default
+definition.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+289</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5.1.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is very hard to pick up the correct
+specification for istream_iterator::operator== as the complete
+specification requires reading two quite disconnected paragraphs,
+24.5.1p3, and 24.5.1.2p6. Reading just the specifaction of the
+operation itself suggests that end-of-stream iterators are
+indistinguishable from 'valid' stream iterators, which is a very
+dangerous misreading.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Merge
+24.5.1p3, equality comparison of end-of-stream-iterators, into
+24.5.1.2p6, the specification of the equality operator for
+istream_iterator.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+290</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The character type of a string delimiter for an
+ostream_iterator should be const charT *, the type of the elements,
+not char *, a narrow character string.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Replace char
+* with const charT *</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+291</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5.2.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">ostream_iterator postincrement operator returns by
+reference rather than by value. This may be a small efficiency
+gain, but it is otherwise unconventional. Prefer
+return-by-value.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style=
+"font-size: 9pt">ostream_iterator operator++(int);</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 34</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">24.5.3 [istreambuf.iterator]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">There are two public sections, and the
+content of the second one is indented with respect to the first. I
+don't it should be.</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+292</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Prefer the use of the new nullptr constant to the
+zero literal when using a null pointer in text.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change
+istreambuf_iterator(0) to istreambuf_iterator(nullptr)</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+293</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5.3</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">2,3,4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The listed
+paragraphs redundantly redefine an input iterator, and redundancy
+can be a dangerous thing in a specification. Suggest a simpler
+phrasing below.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">2. The result of operator*() on an end of stream
+is undefined. For any other iterator value a char_type value is
+returned. 3. Two end of stream iterators are always equal. An end
+of stream iterator is not equal to a non-end of stream iterator. 4.
+As istreambuf_iterator() is an InputIterator but not a
+ForwardIterator, istreambuf_iterators object can be used only for
+one-pass algorithms. It is not possible to assign a character via
+an input iterator.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+294</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">24.5.3.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Implicit
+converting constructors can be invoked at surprising times, so
+there should always be a good reason for declaring one.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Mark the two single-argument constructors take a
+stream or stream buffer as explicit. The proxy constructor should
+remain implicit. explicit
+istreambuf_iterator(basic_istream&lt;charT,traits&gt;&amp; s)
+throw(); explicit
+istreambuf_iterator(basic_streambuf&lt;charT,traits&gt;* s)
+throw();</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+295</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">25</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">THere is a level of redundancy in the library
+specification for many algorithms that can be eliminated with the
+combination of concepts and default parameters for function
+templates. Eliminating redundancy simplified specification and
+reduces the risk of inttroducing accidental inconsistencies.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Adopt n2743,
+or an update of that paper.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 62</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">25, 25.3.1.5, 26.3.6.5</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-left: 0.2in; text-indent: -0.2in; margin-bottom: 0in">
+<font size="2" style="font-size: 9pt">The return types of
+is_sorted_until function and is_heap_until function are iterator.
+But basically, the return type of is_xxx function is bool. And the
+return type of lower_bound function and upper_bound is
+iterator.</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.2in; margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">So we think that it is
+reasonable to change those two functions.</font>
+<p lang="en-GB" align="left" style=
+"text-indent: 0.2in; margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Change "is_sorted_until" to
+"sorted_bound"</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Change "is_heap" to "heap_bound"</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+296</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">25.1.8</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The 'Returns' of adjacent_find requires only
+HasEqualTo, or a Predicate. Requiring EqualityComparable or
+EquivalenceRelation seems too strong and not useful.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change
+EqualityComparable to HasEqualTo and EquivalnceRelation to
+Predicate</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+297</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">25.2.11</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The definition of rotate_copy is very complicated.
+It is equivalent to: return copy(first, middle, copy(middle, last,
+result));</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change
+'effects' to, returns, requires, complexity to: effects: equivalent
+to: return copy(first, middle, copy(middle, last, result));</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+298</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">25.2.13</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">13</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style=
+"font-size: 9pt">partition_point requires a partitioned
+array</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">requires:
+is_partitioned(first, last, pred) != false;</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+299</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">25.2.2</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Should be
+consistent in style use of concepts in template parameter lists.
+The auto-OutputIterator sytle used in std::copy is probably
+preferred.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change way
+signature is declared: template&lt;InputIterator InIter,
+OutputIterator&lt;auto, RvalueOf&lt;InIter::reference&gt;::type&gt;
+OutIter&gt; OutIter move(InIter first, InIter last, OutIter
+result);</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+300</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">25.2.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Since publishing the original standard, we have
+learned that swap is a fundamental operation, and several common
+idioms rely on it - especially those related to exception safety.
+As such it belongs in the common &lt;utility&gt; header rather than
+the broader &lt;algorithm&gt; header, and likewise should move to
+clause 20. For backwards compatiblility the algorithm header should
+be required to #include &lt;utility&gt;, which would be covered in
+the resolution of LWG issue 343. There are already dependencies in
+&lt;algorithm&gt; on types declared in this header, so this comment
+does not create a new dependency.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move primary
+swap template from &lt;algorithm&gt; into &lt;utility&gt;. Move
+25.2.3 to somewhere under 20.2. Require &lt;algorithm&gt; to
+#include &lt;utility&gt; to access pair and provide legacy support
+for finding swap.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+301</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">25.2.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">replace and replace_if have the requirement:
+OutputIterator&lt;Iter, Iter::reference&gt; Which implies they need
+to copy some values in the range the algorithm is iterating over.
+This is not however the case, the only thing that happens is const
+T&amp;s might be copied over existing elements (hence the
+OutputIterator&lt;Iter, const T&amp;&gt;</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove
+OutputIterator&lt;Iter, Iter::reference&gt; from replace and
+replace_if</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+302</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">25.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">the concept StrictWeakOrder covers the definition
+of a strict weak ordering, described in paragraph 4.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove 4, and
+mention StrictWeakOrder in paragraph 1.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+303</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">25.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">This
+paragraph just describes is_partitioned</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">6 A sequence [start,finish) is partitioned with
+respect to an expression f(e) if is_partitioned(start, finish, e)
+!= false</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+304</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">25.3.6</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The requires clauses of push_heap, pop_heap and
+make_heap are inconsistently formatted, dispite being
+identical</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Format them
+identically.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+305</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">25.3.7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1, 9,
+17</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The negative
+requirement on IsSameType is a hold-over from an earlier draught
+with a variadic template form of min/max algorith. It is no longer
+necessary.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike the
+!IsSameType&lt;T, Compare&gt; constraint on min/max/minmax
+algorithms</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 84</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">26</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ge</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Parts of the numerics chapter are not
+concept enabled.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 35</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">26.3 [Complex numbers]</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">te</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Instantiations of the class template
+complex&lt;&gt; have to be allowed for integral types, to reflect
+existing practice and ISO standards (LIA-III).</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+306</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">26.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Random number library component cannot be used in
+constrained templates</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Provide
+constraints for the random number library</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 63</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">26.4.8.5.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">No constructor of discrete_distribution
+that accepts initializer_list.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">discrete_distribution initialize
+distribution by a given range (iterators), but temporary variable
+of a container or an array is needed in the following case.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">int ar[] = {1, 2, 3};</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">discrete_distribution&lt;&gt; dist(ar,
+ar+3);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">Other libraries also accept initializer_list, so
+change discrete_distribution library to accept initializer_list
+too.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Add the following constructer.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style=
+"font-size: 9pt"><u>discrete_distribution(initializer_list&lt;result_type&gt;);</u></font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 64</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">26.5.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in">&#8220;<font size="2"
+style="font-size: 9pt">valarray&lt;T&gt;&amp; operator+=
+(initializer_list&lt;T&gt;);&#8221; is not defined.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add valarray&lt;T&gt;&amp; operator+=
+(initializer_list&lt;T&gt;);</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+307</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">26.7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Footnote
+288</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The footnote refers to TR1, which is not a defined
+term in this standard. Drop the reference to TR1, those templates
+are a regular part of the standard now and how they were introduced
+is no longer relevant.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Drop the
+reference to TR1.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 85</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ge</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The input/output chapter is not concept
+enabled.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+308</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">27</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><span lang="en-US">iostreams library
+cannot be used from constrained templates</span></font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Provide
+constraints for the iostreams library, clause 27</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 65</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27.4.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">Switch from &#8220;unspecified-bool-type&#8221;
+to</font><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang=
+"zxx">&#12288;&#8220;</span></font><font size="2" style=
+"font-size: 9pt">explicit operator bool() const&#8221;.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Replace "operator
+<i>unspecified-bool-type</i>() const;" with "explicit operator
+bool() const;"</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 66</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27.4.4.3</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 11pt"><font size="2" style=
+"font-size: 9pt">1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">Switch from &#8220;unspecified-bool-type&#8221;
+to</font><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif"><span lang=
+"zxx">&#12288;&#8220;</span></font><font size="2" style=
+"font-size: 9pt">explicit operator bool() const&#8221;</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Replace "operator
+<i>unspecified-bool-type</i>() const;" with "explicit operator
+bool() const;"</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 36</font>
+<td>
+<p><font size="2" style="font-size: 10pt" face=
+"Consolas, monospace"><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">27.6.1.2.2
+[istream.formatted.arithmetic]</font></font>
+<td>
+<p><font size="2" style="font-size: 9pt">1, 2, and 3</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">iostate err = 0;</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">iostate is a bitmask type and so could be
+an enumeration. Probably using</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">goodbit is the solution.</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 37</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">27.6.1.2.2
+[istream.formatted.arithmetic]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">else if (lval &lt;
+numeric_limits&lt;int&gt;::min()</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">|| numeric_limits&lt;int&gt;::max() &lt;
+lval))</font>
+<p style="margin-bottom: 0in"><br>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">The parentheses aren't balanced.</font>
+<p><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 67</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27.7.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">basic_stringbuf dose not use
+concept.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Replace &#8220;class Allocator&#8221; to
+&#8220;Allocator Alloc&#8221;.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<font size="2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits =
+char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>Allocator Alloc</u> =
+allocator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class basic_stringbuf : public
+basic_streambuf&lt;charT,traits&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 27.7.1.1 Constructors:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit
+basic_stringbuf(ios_base::openmode which</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">= ios_base::in | ios_base::out);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit basic_stringbuf</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; str,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">ios_base::openmode which = ios_base::in
+| ios_base::out);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_stringbuf(basic_stringbuf&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 27.7.1.3 Get and set:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;
+str() const;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void str(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; s);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">};</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_stringbuf&lt;charT,
+traits, <u>Alloc</u>&gt;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_stringbuf&lt;charT, traits,
+<u>Alloc</u>&gt;&amp; y);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_stringbuf&lt;charT,
+traits, <u>Alloc</u>&gt;&amp;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_stringbuf&lt;charT, traits,
+<u>Alloc</u>&gt;&amp; y);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_stringbuf&lt;charT,
+traits, <u>Alloc</u>&gt;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_stringbuf&lt;charT, traits,
+<u>Alloc</u>&gt;&amp;&amp; y);</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 68</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27.7.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">basic_istringstream dose not use
+concept.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Replace &#8220;class Allocator&#8221; to
+&#8220;Allocator Alloc&#8221;.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<font size="2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits =
+char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>Allocator Alloc</u> =
+allocator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class basic_istringstream : public
+basic_istream&lt;charT,traits&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename traits::int_type
+int_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename traits::pos_type
+pos_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename traits::off_type
+off_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef traits traits_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef <u>Alloc</u>
+allocator_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 27.7.2.1 Constructors:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit
+basic_istringstream(ios_base::openmode which =
+ios_base::in);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit basic_istringstream(</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; str,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">ios_base::openmode which =
+ios_base::in);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_istringstream(basic_istringstream&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 27.7.2.2 Assign and swap:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_istringstream&amp;
+operator=(basic_istringstream&amp;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_istringstream&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 27.7.2.3 Members:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_stringbuf&lt;charT,traits,<u>Alloc</u>&gt;*
+rdbuf() const;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;
+str() const;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void str(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; s);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">private:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">//
+basic_stringbuf&lt;charT,traits,<u>Alloc</u>&gt; sb; exposition
+only</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">};</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_istringstream&lt;charT,
+traits, <u>Alloc</u>&gt;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_istringstream&lt;charT, traits,
+<u>Alloc</u>&gt;&amp; y);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_istringstream&lt;charT,
+traits, <u>Alloc</u>&gt;&amp;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_istringstream&lt;charT, traits,
+<u>Alloc</u>&gt;&amp; y);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_istringstream&lt;charT,
+traits, <u>Alloc</u>&gt;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_istringstream&lt;charT, traits,
+<u>Alloc</u>&gt;&amp;&amp; y);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 69</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27.7.3</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">basic_ostringstream dose not use
+concept.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Replace &#8220;class Allocator&#8221; to
+&#8220;Allocator Alloc&#8221;.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<font size="2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits =
+char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>Allocator Alloc</u> =
+allocator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class basic_ostringstream : public
+basic_ostream&lt;charT,traits&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// types:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename traits::int_type
+int_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename traits::pos_type
+pos_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename traits::off_type
+off_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef traits traits_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef <u>Alloc</u>
+allocator_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 27.7.3.1
+Constructors/destructor:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit
+basic_ostringstream(ios_base::openmode which =
+ios_base::out);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit basic_ostringstream(</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; str,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">ios_base::openmode which =
+ios_base::out);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_ostringstream(basic_ostringstream&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 27.7.3.2 Assign/swap:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_ostringstream&amp;
+operator=(basic_ostringstream&amp;&amp; rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_ostringstream&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 27.7.3.3 Members:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_stringbuf&lt;charT,traits,<u>Alloc</u>&gt;*
+rdbuf() const;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;
+str() const;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void str(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; s);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">private:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">//
+basic_stringbuf&lt;charT,traits,<u>Alloc</u>&gt; sb; exposition
+only</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">};</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator</u></font> <font size="2" style=
+"font-size: 9pt"><u>Alloc</u>&gt;</font></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_ostringstream&lt;charT,
+traits, <u>Alloc</u>&gt;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_ostringstream&lt;charT, traits,
+<u>Alloc</u>&gt;&amp; y);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator</u></font> <font size="2" style=
+"font-size: 9pt"><u>Alloc</u>&gt;</font></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_ostringstream&lt;charT,
+traits, <u>Alloc</u>&gt;&amp;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_ostringstream&lt;charT, traits,
+<u>Alloc</u>&gt;&amp; y);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_ostringstream&lt;charT,
+traits, <u>Alloc</u>&gt;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_ostringstream&lt;charT, traits,
+<u>Alloc</u>&gt;&amp;&amp; y);</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 71</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27.7.3</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo.</font>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">"template" is missing in "class
+basic_ostringstream" of the title of the chapter.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">27.7.3 Class basic_ostringstream</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27.7.3 Class <u>template</u>
+basic_ostringstream</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 72</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27.7.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">basic_stringstream dose not use
+concept.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Replace "class Allocator" to "Allocator
+Alloc".</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<font size="2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits =
+char_traits&lt;charT&gt;,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>Allocator Alloc</u> =
+allocator&lt;charT&gt; &gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">class basic_stringstream</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">: public
+basic_iostream&lt;charT,traits&gt; {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">public:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// types:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef charT char_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename traits::int_type
+int_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename traits::pos_type
+pos_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef typename traits::off_type
+off_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef traits traits_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">typedef <u>Alloc</u>
+allocator_type;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// constructors/destructor</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit basic_stringstream(</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">ios_base::openmode which =
+ios_base::out|ios_base::in);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit basic_stringstream(</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; str,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">ios_base::openmode which =
+ios_base::out|ios_base::in);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_stringstream(basic_stringstream&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// 27.7.5.1 Assign/swap:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_stringstream&amp;&amp;
+rhs);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// Members:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_stringbuf&lt;charT,traits,<u>Alloc</u>&gt;*
+rdbuf() const;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style=
+"font-size: 9pt">basic_string&lt;charT,traits,<u>Alloc</u>&gt;
+str() const;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void str(const
+basic_string&lt;charT,traits,<u>Alloc</u>&gt;&amp; str);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">private:</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">// basic_stringbuf&lt;charT, traits&gt;
+sb; exposition only</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">};</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_stringstream&lt;charT,
+traits, <u>Alloc</u>&gt;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_stringstream&lt;charT, traits,
+<u>Alloc</u>&gt;&amp; y);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator</u></font> <font size="2" style=
+"font-size: 9pt"><u>Alloc</u>&gt;</font></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_stringstream&lt;charT,
+traits, <u>Alloc</u>&gt;&amp;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_stringstream&lt;charT, traits,
+<u>Alloc</u>&gt;&amp; y);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">template &lt;class charT, class traits,
+<u>Allocator</u></font> <font size="2" style=
+"font-size: 9pt"><u>Alloc</u>&gt;</font></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">void swap(basic_stringstream&lt;charT,
+traits, <u>Alloc</u>&gt;&amp; x,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">basic_stringstream&lt;charT, traits,
+<u>Alloc</u>&gt;&amp;&amp; y);</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">}</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 73</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">27.8.1.14</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">It is a problem from C++98, fstream cannot appoint
+a filename of wide character string(const wchar_t and const
+wstring&amp;).</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add interface corresponding to wchar_t,
+char16_t and char32_t.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 86</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">28</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ge</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The regular expressions chapter is not
+concept enabled.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+309</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">28</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Regular expressions cannot be used in constrained
+templates</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Provide
+constraints for the regular expression library, clause 28</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+310</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">28</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The regex
+chapter uses iterators in the old pre-concept style, it should be
+changed to use concepts instead.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Use concepts
+for iterator template arguments throughout.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+314</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">28.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The swap overloads for regex classes are only
+supplied for l-value references. Other sections of the library (eg
+21 strings or 23 containers) provide two extra overloads taking an
+r-value reference as the first and second argument
+respectively.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add the
+missing overloads to 28.4 and the corresponding later sections in
+28 for each swap function. We want to accept AMs paper which
+proposes a single overload with two r-value references</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+315</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">28.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">p6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">6 Effects: string_type str(first, last); return
+use_facet&lt;collate&lt;charT&gt; &gt;(
+getloc()).transform(&amp;*str.begin(), &amp;*str.end()); Is it
+legal to dereference str.end() ?</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Reword to
+effect clause to use legal iterator dereferences</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+316</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">28.4
+ff</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The constructors for regex classes do not have an
+r-value overload.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add the
+missing r-value constructors to regex classes.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+317</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">28.8</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">basic_string
+has both a constructor and an assignment operator that accepts an
+initializer list, basic_regex should have the same.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">In the basic_regex synopsis, after:
+basic_regex&amp; operator=(const charT* ptr); add: basic_regex&amp;
+operator=(initializer_list&lt;charT&gt; il); And after paragraph 20
+add: basic_regex&amp; operator=(initializer_list&lt;charT&gt; il);
+Effects: returns assign(il.begin(), il.end());</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 74</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">28.8</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in">&#8220;<font size="2"
+style="font-size: 9pt">basic_regx &amp; operator=
+(initializer_list&lt;T&gt;);&#8221; is not defined.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add basic_regx &amp; operator=
+(initializer_list&lt;T&gt;);</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+318</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">28.8.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">para
+22</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Constructor definition should appear with the
+other constructors not after assignment ops.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move para 22
+to just after para 17.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+319</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">28.12.2</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">It was always
+expected that regex_token_iterator would be constructible from an
+array literal: indeed ideally this is the prefered method of
+initializing such an object. However, the best we could do in C++0x
+was: template &lt;std::size_t N&gt;
+regex_token_iterator(BidirectionalIterator a, BidirectionalIterator
+b, const regex_type&amp; re, const int (&amp;submatches)[N],
+regex_constants::match_flag_type m =
+regex_constants::match_default); Now that we have initializer_lists
+we should use them to remove this particular wart.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">To the synopsis for regex_token_iterator, after
+template &lt;std::size_t N&gt;
+regex_token_iterator(BidirectionalIterator a, BidirectionalIterator
+b, const regex_type&amp; re, const int (&amp;submatches)[N],
+regex_constants::match_flag_type m =
+regex_constants::match_default); add
+regex_token_iterator(BidirectionalIterator a, BidirectionalIterator
+b, const regex_type&amp; re, initializer_list&lt;int&gt;
+submatches, regex_constants::match_flag_type m =
+regex_constants::match_default); In 28.12.2.1 add the declaration:
+regex_token_iterator(BidirectionalIterator a, BidirectionalIterator
+b, const regex_type&amp; re, initializer_list&lt;int&gt;
+submatches, regex_constants::match_flag_type m =
+regex_constants::match_default); And to the end of para 3 add: The
+forth constructor initializes the member subs to hold a copy of the
+sequence of integer values in the range [submatches.begin(),
+submatches.end()).</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 87</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">29</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ge</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The atomics chapter is not concept
+enabled. The adopted paper, N2427, did have those concepts.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+311</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">29</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Atomic types cannot be used generically in a
+constrained template</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Provide
+constraints for the atomics library, clause 29</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+312</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">29</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The contents
+of the &lt;stdatomic.h&gt; header are not listed anywhere, and
+&lt;cstdatomic&gt; is listed as a C99 header in chapter 17. If we
+intend to use these for compatibility with a future C standard, we
+should not use them now.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Remove
+&lt;cstdatomic&gt; from the C99 headers in table 14. Add a new
+header &lt;atomic&gt; to the headers in table 13. Update chapter 29
+to remove reference to &lt;stdatomic.h&gt; and replace the use of
+&lt;cstdatomic&gt; with &lt;atomic&gt;. If and when WG14 adds
+atomic operations to C we can add corresponding headers to table 14
+with a TR.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 75</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">29</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">A definition of enum or struct is the
+style of C using typedef.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Change to a style of C++.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">29.1</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>typedef</u> enum memory_order
+{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">memory_order_relaxed,
+memory_order_consume, memory_order_acquire,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">memory_order_release,
+memory_order_acq_rel, memory_order_seq_cst</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">} memory_order;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">enum memory_order {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">memory_order_relaxed,
+memory_order_consume, memory_order_acquire,</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">memory_order_release,
+memory_order_acq_rel, memory_order_seq_cst</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">};</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">29.3.1</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>typedef</u> struct atomic_bool
+{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">} atomic_bool;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">struct atomic_bool {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">};</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>typedef</u> struct
+atomic_<i>itype</i> {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">} atomic_<i>itype</i>;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">struct atomic_<i>itype</i> {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">};</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">29.3.2</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>typedef</u> struct atomic_address
+{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">} atomic_address;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">struct atomic_address {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">};</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">29.5</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>typedef</u> struct atomic_flag
+{</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">} atomic_flag;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">}</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">namespace std {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">struct atomic_flag {</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">...</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">};</font>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">}</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+313</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">29.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">seq_cst
+fences don't necessarily guarantee ordering
+
http://home.twcny.rr.com/hinnant/cpp_extensions/issues_preview/lwg-active.html#926>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add a new paragraph after 29.1 [atomics.order]p5
+that says For atomic operations A and B on an atomic object M,
+where A and B modify M, if there are memory_order_seq_cst fences X
+and Y such that A is sequenced before X, Y is sequenced before B,
+and X precedes Y in S, then B occurs later than A in the
+modifiction order of M.</font>
+<p align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 88</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">29.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">The "lockfree" facilities do not tell the
+programmer enough.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Expand the "lockfree" facilities. See
+the attached paper "Issues with the C++ Standard" under Chapter 29,
+"atomics.lockfree doesn't tell the programmer enough"</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 89</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">29.3.1</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Table 122</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The types in the table "Atomics for
+standard typedef types" should be typedefs, not classes. These
+semantics are necessary for compatibility with C.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Change the classes to typedefs.</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Google</font>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 90</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">29.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Are atomic functions allowed to have non-volatile
+overloads?</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Allow non-volatile overloads. See the
+attached paper "Issues with the C++ Standard, under Chapter 29,
+"Are atomic functions allowed to have non-volatile
+overloads?"</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 91</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">29.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">Whether or not a failed compare_exchange is a RMW
+operation (as used in 1.10 [intro.multithread]) is unclear.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">Make failing compare_exchange operations</font>
+<strong><font size="2" style="font-size: 9pt">not</font></strong>
+<font size="2" style="font-size: 9pt">be RMW. See the attached
+paper under "atomic RMW status of failed
+compare_exchange"</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 92</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">29.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">The effect of memory_order_consume with atomic RMW
+operations is unclear.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Follow the lead of fences
+[atomics.fences], and promote memory_order_consume to
+memory_order_acquire with RMW operations.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 76</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">30</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">A description for "<i>Throws:</i>
+Nothing." are not unified.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">At the part without throw,
+"<i>Throws:</i> Nothing." should be described.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Add "<i>Throws:</i> Nothing." to the
+following.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">30.2.1.6 , 1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph</font></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">30.3.3.1 , 4</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph</font></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">30.3.3.2.1 , 6</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph</font></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">30.4.1 , 7</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">and 8</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph</font></font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 11pt"><font size="2" style="font-size: 9pt">30.4.2 ,
+6</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup><font size="2" style=
+"font-size: 9pt">, 7</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup><font size="2" style=
+"font-size: 9pt">,19</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup><font size="2" style=
+"font-size: 9pt">,21th and 25</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph</font></font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 93</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">30</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">ge</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">The thread chapter is not concept
+enabled.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p align="justify" style=
+"margin-right: -0.18in; margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">UK<br>
+320</font>
+<p><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">30</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Threads
+library cannot be used in constrained templates</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Provide
+constraints for the threads library, clause 30</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+321</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">30</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Throughout this clause, the term Requires: is used
+to introduce compile time requirements, which we expect to be
+replaced with concepts and requires in code. Run-time preconditions
+are introduced with the term "Preconditions:" which is not a
+defined part of the library documentation structure (17.5.2.4).
+However, this is exactly the direction that BSI would like to see
+the organisation move, replacing Requires: clauses with
+Preconditions: clasues throught the library. See comment against
+clause 17 for more details.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Decument
+Preconditions: paragraphs in 17.5.2.4, and use consistently through
+rest of the library.</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 94</font>
+<td>
+<p><font size="2" style="font-size: 9pt">30.1.2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">The first sentence of para
+1 suggests that no other library function is permitted to call
+operating system or low level APIs.</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">Rewrite para 1 as: &#8220;
+<font color="#000000">Some functions described in this Clause are
+specified to throw exceptions of type system_error
+(</font><font color="#0000FF">19.4.5</font> <font color=
+"#000000">). Such exceptions shall be thrown if a call to an
+operating system or underlying API results in an error that
+prevents the library function from satisfying its postconditions or
+from returning a meaningful value.&#8221;</font></font>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 95</font>
+<td>
+<p><font size="2" style="font-size: 9pt">30.1.3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p>&#8220;<font size="2" style=
+"font-size: 9pt">native_handle_type&#8221; is a typedef, not a
+class member.</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">Several classes described in this Clause have a
+member native_handle (of type native_handle_type) . The</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">presence of this member and its
+semantics is implementation defined. [ Note: This member allows
+implementations to provide access to implementation details. The
+name of the member and the type are specified to facilitate
+portable compile-time detection. Actual use of this member or the
+corresponding type is inherently non-portable. &#8212;end note
+]</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 96</font>
+<td>
+<p><font size="2" style="font-size: 9pt">30.1.4</font>
+<td>
+<p><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">There is no definition
+here for monotonic clock.</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">Implementations should use a <i>monotonic
+clock</i> to measure time for these functions. A monotonic clock
+measures real time, but cannot be set, and is guaranteed to have no
+negative clock jumps.</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+322</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.1.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Not all systms can provide a monotonic clock. How
+are they expected to treat a _for function?</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add at least
+a note explaining the intent for systems that do not support a
+monotonic clock.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+323</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.2.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The presence of a non-explicit variadic template
+constructor alongside an explicit single-argument constructor can
+lead to behaviour that is not intended: the variadic constructor
+will be selected for implicit conversions, defeating the purpose of
+the explicit single-argument constructor. Additionally the
+single-argument constructor is redundant; the variadic constructor
+can provide identical functionality with one *fewer* copies if the
+supplied func is an lvalue.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Mark
+constructor template &lt;class F, class ...Args&gt;
+thread(F&amp;&amp; f, Args&amp;&amp;... args); as explicit and
+remove the single-argument constructor.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+324</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.2.1.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">thread::id objects should be as useable in hashing
+containers as they are in ordered associative containers.</font>
+<p align="left"><br>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add thread::id support for std::hash</font>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left" style="margin-bottom: 0in"><br>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 77</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">30.2.1.2</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">"CopyConstructible" and "MoveConstructible" in
+"<i>Requires:</i> F and each Ti in Args shall be CopyConstructible
+if an lvalue and otherwise MoveConstructible." are reflected by
+interface.</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Add a concept for constructor of
+thread.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 78</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">30.2.1.2</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 11pt"><font size="2" style=
+"font-size: 9pt">4</font><sup><font size="2" style=
+"font-size: 9pt">th</font></sup> <font size="2" style=
+"font-size: 9pt">paragraph, 1</font><sup><font size="2" style=
+"font-size: 9pt">st</font></sup> <font size="2" style=
+"font-size: 9pt">line</font></font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">In "F and each Ti in Args", 'Ti' is not
+clear.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Replace "Ti" with "args"</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">US 97</font>
+<td>
+<p><font size="2" style="font-size: 9pt">30.2.1.3</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p><font size="2" style="font-size: 9pt">detach-on-destruction may
+result in &#8220;escaped&#8221; threads accessing objects with
+bounded lifetime after the end of their lifetime.</font>
+<td>
+<p><font size="2" style="font-size: 9pt">See document WG21
+N2802=08-0312 written by Hans Boehm.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">US 98</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">30.2.1.3, 30.2.1.4</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">The current defined behavior for the std::thread
+destructor is to detach the thread. Unfortunately, this behavior
+exposes programmers to tricky, hard-to-diagnose, undefined
+behavior.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Change destruction behavior to undefined
+behavior, with a note strongly encouraging termination. See the
+attached paper "Issues with the C++ Standard" under Chapter 30,
+"Implicit thread detach is harmful".</font>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+325</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.3.3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">We believe
+constexpr literal values should be a more natural expression of
+empty tag types than extern objects as it should improve the
+compilers ability to optimize the empty object away
+completely.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Replace the extern declarations: extern const
+defer_lock_t defer_lock; extern const try_to_lock_t try_to_lock;
+extern const adopt_lock_t adopt_lock; with constexpr values
+constexpr defer_lock_t defer_lock{}; constexpr try_to_lock_t
+try_to_lock{}; constexpr adopt_lock_t adopt_lock{};</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+326</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.3.3.2.1</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">The precondition that the mutex is not owned by
+this thread offers introduces the risk of un-necessary undefined
+behaviour into the program. The only time it matters whether the
+current thread owns the mutex is in the lock operation, and that
+will happen subsequent to construction in this case. The lock
+operation has the identical pre-condition, so there is nothing
+gained by asserting that precondition earlier and denying the
+program the right to get into a valid state before calling
+lock.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Strike
+30.3.3.2.1p7</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+327</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.3.3.2.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">4, 9, 14,
+19</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Not clear what the specification for error
+condition resource_deadlock_would_occur means. It is perfectly
+possible for this thread to own the mutex without setting owns to
+true on this specific lock object. It is also possible for lock
+operations to succeed even if the thread does own the mutex, if the
+mutex is recursive. Likewise, if the mutex is not recursive and the
+mutex has been locked externally, it is not always possible to know
+that this error condition should be raised, depending on the host
+operating system facilities. It is possible that 'i.e.' was
+supposed to be 'e.g.' and that suggests that recursive locks are
+not allowed. That makes sense, as the exposition-only member owns
+is boolean and not a integer to count recursive locks.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a
+precondition !owns. Change the 'i.e.' in the error condition to be
+'e.g.' to allow for this condition to propogate deadlock detection
+by the host OS.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+328</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.3.3.2.2</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">20</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">There is a
+missing precondition that owns is true, or an if(owns) test is
+missing from the effect clause</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Add a precondition that owns == true. Add an error
+condition to detect a violation, rather than yield undefined
+behaviour.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+329</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">future,
+promise and packaged_task provide a framework for creating future
+values, but a simple function to tie all three components together
+is missing. Note that we only need a *simple* facility for C++0x.
+Advanced thread pools are to be left for TR2.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Provide a simple function along the lines of:
+template&lt; typename F, typename ... Args &gt; requires
+Callable&lt; F, Args... &gt; future&lt; Callable::result_type &gt;
+async( F&amp;&amp; f, Args &amp;&amp; ... ); Semantics are similar
+to creating a thread object with a packaged_task invoking f with
+forward&lt;Args&gt;(args...) but details are left unspecified to
+allow different scheduling and thread spawning implementations. It
+is unspecified whether a task submitted to async is run on its own
+thread or a thread previously used for another async task. If a
+call to async succeeds, it shall be safe to wait for it from any
+thread. The state of thread_local variables shall be preserved
+during async calls. No two incomplete async tasks shall see the
+same value of this_thread::get_id(). [Note: this effectively forces
+new tasks to be run on a new thread, or a fixed-size pool with no
+queue. If the library is unable to spawn a new thread or there are
+no free worker threads then the async call should fail.]</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+330</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.1</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">30.5.1 (and
+then 30.5.7) refer to a specialisation of
+constructible_with_allocator_prefix&lt;&gt; However this trait is
+not in the CD, so references to it should be removed.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Remove the reference to
+constructible_with_allocator_prefix in 30.5.1 Remove paragraph
+30.5.7</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 79</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">30.5.1</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">The concept of UsesAllocator and
+Allocator should be used.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class R, class
+Alloc&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">struct
+uses_allocator&lt;promise&lt;R&gt;, Alloc&gt;;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class R&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">struct
+constructible_with_allocator_prefix&lt;promise&lt;R&gt;
+&gt;;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template&lt;class R, Allocator
+Alloc&gt;</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">concept_map UsesAllocator&lt;promise&lt;R&gt;,
+Alloc&gt;;</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+331</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.3</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Not clear what it means for a public constructor
+to be 'exposition only'. If the intent is purely to support the
+library calling this constructor then it can be made private and
+accessed through friendship. Otherwise it should be documented for
+public consumption.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Declare the
+constructor as private with a note about intended friendship, or
+remove the exposition-only comment and document the
+semantics.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+332</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ed</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is not clear without reference to the original
+proposal how to use a future. In particular, the only way for the
+user to construct a future is via the promise API which is
+documented after the presentation of future. Most library clauses
+feature a small description of their components and intended use,
+it would be most useful in this case.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Provide a
+small introductory paragraph, docuenting intended purpose of the
+future class template and the way futures can only be created via
+the promise API.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+333</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">We expect the
+complicated 3-signature specifcation for future::get() to be
+simplified to a single signature with a requires clause by the
+application of concepts.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Requires
+fully baked concepts for clause 30</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+334</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.4</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">5</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Behaviour of get() is undefined if calling get()
+while not is_ready(). The intent is that get() is a blocking call,
+and will wait for the future to become ready.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Effects: If
+is_ready() would return false, block on the asynchronous result
+associated with *this.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+335</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">std::unique_future is MoveConstructible, so you
+can transfer the association with an asynchronous result from one
+instance to another. However, there is no way to determine whether
+or not an instance has been moved from, and therefore whether or
+not it is safe to wait for it. std::promise&lt;int&gt; p;
+std::unique_future&lt;int&gt; uf(p.get_future());
+std::unique_future&lt;int&gt; uf2(std::move(uf)); uf.wait(); //
+oops, uf has no result to wait for.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a
+"waitable()" function to unique_future (and shared_future) akin to
+std::thread::joinable(), which returns true if there is an
+associated result to wait for (whether or not it is ready). Then we
+can say: if(uf.waitable()) uf.wait();</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+336</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.4</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">It is possible to transfer ownership of the
+asynchronous result from one unique_future instance to another via
+the move-constructor. However, it is not possible to transfer it
+back, and nor is it possible to create a default-constructed
+unique_future instance to use as a later move target. This unduly
+limits the use of unique_future in code. Also, the lack of a
+move-assignment operator restricts the use of unique_future in
+containers such as std::vector - vector::insert requires
+move-assignable for example.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a default
+constructor with the semantics that it creates a unique_future with
+no associated asynchronous result. Add a move-assignment operator
+which transfers ownership.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 80</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">30.5.4 , 30.5.5</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Typo, duplicated "&gt;"</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">"class Period&gt;&gt;"</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">Remove one</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+337</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">shared_future should support an efficient move
+constructor that can avoid unnecessary manipulation of a reference
+count, much like shared_ptr</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a move
+constructor</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+338</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.5</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">shared_future
+is currently CopyConstructible, but not CopyAssignable. This is
+inconsistent with shared_ptr, and will surprise users. Users will
+then write work-arounds to provide this behaviour. We should
+provide it simply and efficiently as part of shared_future. Note
+that since the shared_future member functions for accessing the
+state are all declared const, the original usage of an immutable
+shared_future value that can be freely copied by multiple threads
+can be retained by declaring such an instance as "const
+shared_future".</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Remove "=delete" from the copy-assignment operator
+of shared_future. Add a move-constructor
+shared_future(shared_future&amp;&amp; rhs), and a move-assignment
+operator shared_future&amp; operator=(shared_future&amp;&amp; rhs).
+The postcondition for the copy-assignment operator is that *this
+has the same associated state as rhs. The postcondition for the
+move-constructor and move assignment is that *this has the same
+associated as rhs had before the constructor/assignment call and
+that rhs has no associated state.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+339</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">6,
+7</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Move
+assignment is goiing in the wrong direction, assigning from *this
+to the passed rvalue, and then returning a reference to an unusable
+*this</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Strike 6. 7 Postcondition: associated state of
+*this is the same as the associated state of rhs before the call.
+rhs has no associated state.</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+340</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">11, 12,
+13</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">There is an implied postcondition that the state
+of the promise is transferred into the future leaving the promise
+with no associated state. It should be spelled out.</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style=
+"font-size: 9pt">Postcondition: *this has no associated
+state.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+341</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.6</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">promise::swap
+accepts its parameter by lvalue reference. This is inconsistent
+with other types that provide a swap member function, where those
+swap functions accept an rvalue reference</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Change
+promise::swap to take an rvalue reference.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+342</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.6</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">std::promise is missing a non-member overload of
+swap. This is inconsistent with other types that provide a swap
+member function</font>
+<p align="left"><br>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add a
+non-member overload void swap(promise&amp;&amp; x,promise&amp;&amp;
+y){ x.swap(y); }</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+343</font>
+<td>
+<p align="justify"><font size="2" style=
+"font-size: 9pt">30.5.6</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">3</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Te</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">The move
+constructor of a std::promise object does not need to allocate any
+memory, so the move-construct-with-allocator overload of the
+constructor is superfluous.</font>
+<td>
+<p align="left" style="margin-bottom: 0in"><font size="2" style=
+"font-size: 9pt">Remove the constructor with the signature template
+&lt;class Allocator&gt; promise(allocator_arg_t, const
+Allocator&amp; a, promise&amp; rhs);</font>
+<p align="left"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">JP 81</font>
+<td>
+<p lang="en-GB" align="left"><font size="2" style=
+"font-size: 9pt">30.5.8</font>
+<td>
+<p lang="en-GB" align="left"><br>
+<td>
+<p><font size="2" style="font-size: 9pt">ed</font>
+<td>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><font size=
+"2" style="font-size: 9pt">There are not requirements for F and a
+concept of Allocator dose not use.</font>
+<td>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">Correct as follows.</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><br>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class F&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit packaged_task(F f);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class F, class
+Allocator&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit packaged_task(allocator_arg_t,
+const Allocator&amp; a, F f);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class F&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit packaged_task(F&amp;&amp;
+f);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class F, class
+Allocator&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit packaged_task(allocator_arg_t,
+const Allocator&amp; a, F&amp;&amp; f);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">should be</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class F&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>requires CopyConstructible&lt;F&gt;
+&amp;&amp; Callable&lt;F, ArgTypes...&gt;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">&amp;&amp; Convertible&lt;Callable&lt;F,
+ArgTypes...&gt;::result_type, R&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit packaged_task(F f);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class F, <u>Allocator
+Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>requires CopyConstructible&lt;F&gt;
+&amp;&amp; Callable&lt;F, ArgTypes...&gt;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">&amp;&amp; Convertible&lt;Callable&lt;F,
+ArgTypes...&gt;::result_type, R&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit packaged_task(allocator_arg_t,
+const <u>Alloc</u>&amp; a, F f);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class F&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>requires CopyConstructible&lt;F&gt;
+&amp;&amp; Callable&lt;F, ArgTypes...&gt;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">&amp;&amp; Convertible&lt;Callable&lt;F,
+ArgTypes...&gt;::result_type, R&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">explicit packaged_task(F&amp;&amp;
+f);</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in">&nbsp;
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">template &lt;class F, <u>Allocator
+Alloc</u>&gt;</font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt"><u>requires CopyConstructible&lt;F&gt;
+&amp;&amp; Callable&lt;F, ArgTypes...&gt;</u></font>
+<p lang="en-GB" align="left" style="margin-bottom: 0in"><font size=
+"2" style="font-size: 9pt">&amp;&amp; Convertible&lt;Callable&lt;F,
+ArgTypes...&gt;::result_type, R&gt;</font>
+<p lang="en-GB" align="left" style=
+"margin-top: 0.04in; margin-bottom: 0.04in"><font size="2" style=
+"font-size: 9pt">explicit packaged_task(allocator_arg_t, const
+<u>Alloc</u>&amp; a, F&amp;&amp; f);</font>
+<p lang="en-GB" align="left" style="margin-top: 0.04in"><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-23</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Annex B</font>
+<td>
+<p><font size="2" style="font-size: 9pt">p2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">DE-23 Recursive use of
+constexpr functions appears to be permitted. Since such functions
+may be required to be evaluated at compile-time, Annex B
+"implementation quantities" should specify a maximum depth of
+recursion.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">In Annex B, specify a
+recursion depth of 256 or a larger value.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-24</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Annex B</font>
+<td>
+<p><font size="2" style="font-size: 9pt">p2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">DE-24 The number of
+placeholders for "bind" is implementation-defined in 20.7.12.1.4,
+but no minimum is suggested in Annex B.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Add a miminum of 10
+placeholders to Annex B.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">DE-25</font>
+<td>
+<p><font size="2" style="font-size: 9pt">Annex B</font>
+<td>
+<p><font size="2" style="font-size: 9pt">p2</font>
+<td>
+<p><font size="2" style="font-size: 9pt">te</font>
+<td>
+<p lang="en-GB" style="margin-top: 0.04in; margin-bottom: 0.04in">
+<font size="2" style="font-size: 9pt">DE-25 Specifying a minimum of
+17 recursively nested template instantiations is too small for
+practical purposes. The limit is too high to effectively limit
+compiler resource usage, see
+
http://ubiety.uwaterloo.ca/~tveldhui/papers/2003/turing.pdf . The
+conclusion is that the metric "number of recursively nested
+template instantiations" is inapposite.</font>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt">Remove the bullet
+"Recursively nested template instantiations [17]".</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 38</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">C.2 [diffs.library]</font>
+<td>
+<p><font size="2" style="font-size: 9pt">1</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">What is ISO/IEC 1990:9899/DAM 1? My guess
+is that's a typo for ISO/IEC</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">9899/Amd.1:1995 which I'd have expected to
+be referenced here (the tables</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">make reference to things which were
+introduced by Amd.1).</font>
+<p><br>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">One need probably a reference to the
+document which introduce char16_t and</font>
+<p><font size="2" style="font-size: 9pt">char32_t in C (ISO/IEC TR
+19769:2004?).</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">UK<br>
+344</font>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Appendix
+D</font>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><font size="2" style="font-size: 9pt">Ge</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">It is
+desirable to allow some mechanism to support phasing out of
+deprecated features in the future. Allowing compilers to implement
+a mode where deprecated features are not available is a good first
+step.</font>
+<td>
+<p align="left"><font size="2" style="font-size: 9pt">Add to the
+definition of deprecated features permission for compilers to
+maintain a conditionally supported mode where deprecated features
+can be disabled, so long as they also default to a mode where all
+deprecated features are supported.</font>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><font size="2" style="font-size: 9pt">FR 39</font>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">Index</font>
+<td>
+<p><br>
+<td>
+<p><font size="2" style="font-size: 9pt" face=
+"Arial, sans-serif">ed</font>
+<td>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">Some definitions seem not indexed (such as
+/trivially copyable/ or</font>
+<p style="margin-bottom: 0in"><font size="2" style="font-size: 9pt"
+face="Arial, sans-serif">/sequenced before/), indexing them would
+be useful (and marking specially the page -- say bold or italic --
+which reference to the definition would increase the usefulness;
+having a separate index of all definitions is something which could
+also be considered).</font>
+<p><br>
+<td>
+<p><br>
+<td>
+<p><br>
+<tr valign="top">
+<td>
+<p><br>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><br>
+<td>
+<p align="justify"><br>
+<td>
+<p align="left"><br>
+<td>
+<p><br></table></div>
\ No newline at end of file


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk