<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 11">
<meta name=Originator content="Microsoft Word 11">
<link rel=File-List href="Char_traits_files/filelist.xml">
<title>Issue:</title>
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Author>Jack W. Reeves</o:Author>
  <o:LastAuthor>Jack W. Reeves</o:LastAuthor>
  <o:Revision>2</o:Revision>
  <o:TotalTime>171</o:TotalTime>
  <o:Created>2006-04-06T23:01:00Z</o:Created>
  <o:LastSaved>2006-04-06T23:01:00Z</o:LastSaved>
  <o:Pages>1</o:Pages>
  <o:Words>1392</o:Words>
  <o:Characters>7941</o:Characters>
  <o:Company>Bleading Edge Software, Inc.</o:Company>
  <o:Lines>66</o:Lines>
  <o:Paragraphs>18</o:Paragraphs>
  <o:CharactersWithSpaces>9315</o:CharactersWithSpaces>
  <o:Version>11.6568</o:Version>
 </o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:ActiveWritingStyle Lang="EN-US" VendorID="64" DLLVersion="131078"
   NLCheck="1">1</w:ActiveWritingStyle>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
 </w:LatentStyles>
</xml><![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:NimbusRomNo9L-Regu;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:NimbusRomNo9L-ReguItal;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:CMTT10;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:CMTT9;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:NimbusRomNo9L-Medi;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:3 0 0 0 1 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
ins
	{mso-style-type:export-only;
	text-decoration:none;}
span.msoIns
	{mso-style-type:export-only;
	mso-style-name:"";
	text-decoration:underline;
	text-underline:single;}
span.msoDel
	{mso-style-type:export-only;
	mso-style-name:"";
	text-decoration:line-through;
	color:red;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
 /* List Definitions */
 @list l0
	{mso-list-id:1796175040;
	mso-list-type:hybrid;
	mso-list-template-ids:1495149758 67698713 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:.5in;
	mso-level-number-position:left;
	text-indent:-.25in;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
-->
</style>
<!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-ansi-language:#0400;
	mso-fareast-language:#0400;
	mso-bidi-language:#0400;}
</style>
<![endif]--><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="2050"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1"/>
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US style='tab-interval:.5in'>

<div class=Section1>

<p class=MsoNormal align=right style='text-align:right'>Doc: N1985==06-055</p>

<p class=MsoNormal align=right style='text-align:right'>Date: 2006-04-06</p>

<p class=MsoNormal align=right style='text-align:right'>Author: Jack W. Reeves</p>

<p class=MsoNormal align=right style='text-align:right'>jack.reeves@bleading-edge.com</p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><o:p>&nbsp;</o:p></b></p>

<p class=MsoNormal align=center style='text-align:center'><b style='mso-bidi-font-weight:
normal'>Request the Standard Provide Explicit <br>
Specialization of char_traits For All Built-in Character Types<o:p></o:p></b></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Changes to Section 21.1 [lib.char.traits]</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>The Standard does not require explicit specializations of
std::char_traits&lt;&gt; for any type other than char and wchar_t. This can
lead to some unexpected and undesirable behavior.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Consider the following:</p>

<p class=MsoNormal><span style='mso-tab-count:1'> </span><b
style='mso-bidi-font-weight:normal'>std::basic_string&lt;unsigned char&gt;
buffer;<o:p></o:p></b></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><o:p>&nbsp;</o:p></b></p>

<p class=MsoNormal>This is shorthand for </p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
style='mso-tab-count:1'> </span>std::basic_string&lt;unsigned char,
std::char_traits&lt;unsigned char&gt;, std::allocator&lt;unsigned char&gt; &gt;
buffer;<o:p></o:p></b></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><o:p>&nbsp;</o:p></b></p>

<p class=MsoNormal>This yields undefined behavior since the standard only
provides a declaration for <b style='mso-bidi-font-weight:normal'>std::char_traits&lt;&gt;</b>
and does not require an explicit specialization of <b style='mso-bidi-font-weight:
normal'>std::char_traits&lt;unsigned char&gt;</b>.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Naturally, undefined behavior can mean anything, but several
possible results are common. </p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<ol style='margin-top:0in' start=1 type=a>
 <li class=MsoNormal style='mso-list:l0 level1 lfo1;tab-stops:list .5in'>The
     implementation is minimal and provides only the required explicit
     specializations. In this case, the above code will not compile.</li>
</ol>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<ol style='margin-top:0in' start=2 type=a>
 <li class=MsoNormal style='mso-list:l0 level1 lfo1;tab-stops:list .5in'>Some
     implementations attempt to provide a definition of the template class <b
     style='mso-bidi-font-weight:normal'>std::char_traits&lt;&gt;</b> itself
     based upon the requirements in table 39. Although some have argued that
     this follows from the standard, I have always felt that such a definition
     has to be considered an implementation extension. In any case, it is
     problematic since it is basically impossible to provide a template
     definition that will correctly implement the requirements of table 39 for
     any POD type. The typical definitions usually do work when specialized
     with <b style='mso-bidi-font-weight:normal'>unsigned char</b> however. In
     such cases, <b style='mso-bidi-font-weight:normal'>std::basic_string&lt;unsigned
     char&gt;</b> will appear to work correctly.</li>
</ol>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<ol style='margin-top:0in' start=3 type=a>
 <li class=MsoNormal style='mso-list:l0 level1 lfo1;tab-stops:list .5in'>Some implementation
     may provide an implementation extension in the form of an explicit
     specialization of <b style='mso-bidi-font-weight:normal'>std::char_traits&lt;unsigned
     char&gt;</b>. Naturally, on such platforms, <b style='mso-bidi-font-weight:
     normal'>std::basic_string&lt;unsigned char&gt;</b> will work correctly.</li>
</ol>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Since the presence of a correct specialization of <b
style='mso-bidi-font-weight:normal'>std::char_traits&lt;unsigned char&gt;</b>
is currently an implementation extension, any client attempting to use <b
style='mso-bidi-font-weight:normal'>std::basic_string&lt;unsigned char&gt;</b>
in a portable manner will have to provide their own character traits class.
Furthermore, they can not provide this as an explicit specialization of <b
style='mso-bidi-font-weight:normal'>std::char_traits&lt;&gt;</b>. The Standard
explicitly states that explicit specialization of templates defined in namespace
<b style='mso-bidi-font-weight:normal'>std</b> for anything other than user
defined types yields undefined behavior. As a practical matter, such an
explicit specialization might work on platform (a) and (b) above, but would
clearly clash with the implementation defined extension on platform (c). Furthermore,
such an approach causes problems if multiple libraries try it even on platforms
(a) and (b). </p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Most users want the declaration of a <b style='mso-bidi-font-weight:
normal'>std::basic_string&lt;unsigned char&gt;</b> to work. The typical user
simply expects it to, and the sophisticated user who understands why it doesnt
will still be annoyed with the alternative. After all, the Standard uses <b
style='mso-bidi-font-weight:normal'>std::basic_string&lt;char&gt; </b>so why
shouldnt it work the same for <b style='mso-bidi-font-weight:normal'>unsigned
char</b>?</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>A typical reaction to the fact that <b style='mso-bidi-font-weight:
normal'>std::basic_string&lt;unsigned char&gt;</b> will not work portably is to
suggest <b style='mso-bidi-font-weight:normal'>std::vector&lt;unsigned char&gt;</b>.
While this ordinarily will solve an immediate problem, the use of <b
style='mso-bidi-font-weight:normal'>vector</b> instead of <b style='mso-bidi-font-weight:
normal'>basic_string</b> for specializations of built-in types has potential
performance hits which make it undesirable for reusable library code. <b
style='mso-bidi-font-weight:normal'>Vector</b> is required to work with any
type. As a result, internal copying of <b style='mso-bidi-font-weight:normal'>vectors</b>
storage must involve loops which invoke copy constructors and destructors.
While these operations are NOOPs for built-in types, the loops will still exist
and it becomes a quality of implementation issue whether they will be
optimized away. This is clearly a valid concern, or the Standard would not
require the <b style='mso-bidi-font-weight:normal'>copy()</b>, <b
style='mso-bidi-font-weight:normal'>move(), </b>and <b style='mso-bidi-font-weight:
normal'>assign()</b> operations to be provided by any valid character traits
class. </p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Suggested resolution: the Standard should require that
explicit specializations of <b style='mso-bidi-font-weight:normal'>std::char_traits&lt;&gt;</b>
be provided for all built-in character types.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Proposed resolution:</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Change 21.1/1 as follows:</p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>This subclause defines requirements on classes representing
</span><i style='mso-bidi-font-style:normal'><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-ReguItal;mso-bidi-font-family:NimbusRomNo9L-ReguItal'>character
traits</span></i><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu'>, and <span class=msoDel><del
cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:33">defines </del></span><span
class=msoIns><ins cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:33">declares
</ins></span>a class template </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10'>char_traits&lt;charT&gt;</span></b><b
style='mso-bidi-font-weight:normal'><span style='font-size:10.0pt;font-family:
NimbusRomNo9L-Regu;mso-bidi-font-family:NimbusRomNo9L-Regu'>,</span></b><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'> along with <span class=msoDel><del
cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:34">two </del></span><span
class=msoIns><ins cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:34">four
</ins></span>specializations, </span><b style='mso-bidi-font-weight:normal'><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10'>char_traits&lt;char&gt;<span
class=msoIns><ins cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:35">,</ins></span></span></b><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10'> </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'><span class=msoDel><del cite="mailto:Jack%20W.%20Reeves"
datetime="2006-04-05T22:49">and </del></span></span><b style='mso-bidi-font-weight:
normal'><span style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:
CMTT10'>char_traits&lt;wchar_t&gt;<span class=msoIns><ins
cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:49">,</ins></span> <span
class=msoIns><ins cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:36">char_traits&lt;unsigned
char&gt;, </ins></span></span></b><span style='font-size:10.0pt;font-family:
NimbusRomNo9L-Regu;mso-bidi-font-family:NimbusRomNo9L-Regu'><span class=msoIns><ins
cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:49">and </ins></span></span><b
style='mso-bidi-font-weight:normal'><span style='font-size:10.0pt;font-family:
CMTT10;mso-bidi-font-family:CMTT10'><span class=msoIns><ins
cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:36">char_traits&lt;signed
char&gt;</ins></span></span></b><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu'><span class=msoDel><del
cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:49">,</del></span>
that satisfy those requirements.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>Change 21.1/4 as follows:<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>This subclause specifies a struct template, </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10'>char_traits&lt;charT&gt;</span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>, and <span class=msoDel><del cite="mailto:Jack%20W.%20Reeves"
datetime="2006-04-05T22:38">two </del></span><span class=msoIns><ins
cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:38">four </ins></span>explicit
specializations of it, </span><span style='font-size:10.0pt;font-family:CMTT10;
mso-bidi-font-family:CMTT10'>char_traits&lt;char&gt;<span class=msoIns><ins
cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:50">, </ins></span><span
class=msoDel><del cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:50"><span
style='mso-spacerun:yes'></span></del></span></span><span style='font-size:
10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:NimbusRomNo9L-Regu'><span
class=msoDel><del cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:50">and
</del></span></span><span style='font-size:10.0pt;font-family:CMTT10;
mso-bidi-font-family:CMTT10'>char_traits&lt;wchar_t<span class=msoDel><del
cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:50">&gt;</del></span></span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'><span class=msoDel><del cite="mailto:Jack%20W.%20Reeves"
datetime="2006-04-05T22:50">, </del></span><b style='mso-bidi-font-weight:normal'><span
class=msoIns><ins cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:50">char_traits&lt;unsigned
char&gt;, </ins></span></b><span class=msoIns><ins cite="mailto:Jack%20W.%20Reeves"
datetime="2006-04-05T22:51">and <b style='mso-bidi-font-weight:normal'>char_traits&lt;signed
char&gt;, </b></ins></span><span class=msoIns><ins cite="mailto:Jack%20W.%20Reeves"
datetime="2006-04-05T22:50"><span style='mso-spacerun:yes'></span></ins></span>all
of which appear in the header </span><span style='font-size:10.0pt;font-family:
CMTT10;mso-bidi-font-family:CMTT10'>&lt;string&gt; </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>and satisfy the requirements below.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>Change 21.1.3 to read:<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9'>namespace
std {<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9'><span
style='mso-spacerun:yes'> </span>template &lt;&gt; struct char_traits
&lt;char &gt;;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9'><span
style='mso-spacerun:yes'> </span>template &lt;&gt; struct char_traits &lt;
wchar_t &gt;;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9'><span
style='mso-spacerun:yes'> </span>template &lt;&gt; struct char_traits&lt;unsigned
char&gt;;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9'><span
style='mso-spacerun:yes'> </span>template &lt;&gt; struct
char_traits&lt;signed char&gt;;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9'>}<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9'>Change
21.1.3/1 as follows:<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>The header </span><span style='font-size:10.0pt;font-family:
CMTT10;mso-bidi-font-family:CMTT10'>&lt;string&gt; </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>declares <span class=msoDel><del
cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:43">two </del></span><span
class=msoIns><ins cite="mailto:Jack%20W.%20Reeves" datetime="2006-04-05T22:43">four
</ins></span>structs that are specializations of the template struct </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10'>char_traits</span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>Add <span style='mso-spacerun:yes'></span><o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>21.1.3.3 </span><span style='font-size:10.0pt;font-family:
CMTT10;mso-bidi-font-family:CMTT10;color:black'>struct char_traits&lt;unsigned
char&gt;</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu'><o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
NimbusRomNo9L-Medi;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'>namespace
std {<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>template &lt;&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>struct char_traits &lt;unsigned char &gt; {<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>typedef unsigned char char_type ;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>typedef int int_type ;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>typedef streamoff off_type ;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>typedef streampos pos_type ;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>typedef mbstate_t state_type ;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static void assign ( char_type &amp; c1 ,
const char_type &amp; c2 );<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static bool eq( const char_type &amp; c1 ,
const char_type &amp; c2 );<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static bool lt( const char_type &amp; c1 ,
const char_type &amp; c2 );<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static int compare ( const char_type * s1 ,
const char_type * s2 , size_t n);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static size_t length ( const char_type *
s);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static const char_type * find ( const
char_type * s , size_t n,<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>const char_type &amp; a);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static char_type * move ( char_type * s1 ,
const char_type * s2 , size_t n);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
NimbusRomNo9L-Medi;color:black'><span style='mso-spacerun:yes'> </span></span><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'>static
char_type * copy ( char_type * s1 , const char_type * s2 , size_t n); <o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static char_type * assign ( char_type * s ,
size_t n , char_type a);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static int_type not_eof ( const int_type
&amp; c);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static char_type to_char_type ( const
int_type &amp; c);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static int_type to_int_type ( const
char_type &amp; c);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static bool eq_int_type ( const int_type
&amp; c1 , const int_type &amp; c2 );<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static int_type eof ();<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>};<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'>}<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The header </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>&lt;string&gt; </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>(</span><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:NimbusRomNo9L-Regu;
color:blue'>21.2</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>) declares a
specialization of the template struct </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>char_traits </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>for unsigned </span><span style='font-size:
10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>char</span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>. It is for narroworiented iostream classes.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The defined types for </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>int_type</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>pos_type</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>off_type</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, and </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>state_type </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>are </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>int</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>streampos</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>streamoff</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, and </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>mbstate_t </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>respectively.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The type </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>streampos </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>is an implementation-defined type that
satisfies the requirements for </span><span style='font-size:10.0pt;font-family:
CMTT10;mso-bidi-font-family:CMTT10;color:black'>POS_T </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>in </span><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:NimbusRomNo9L-Regu;
color:blue'>21.1.2</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The type </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>streamoff </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>is an implementation-defined type that
satisfies the requirements for </span><span style='font-size:10.0pt;font-family:
CMTT10;mso-bidi-font-family:CMTT10;color:black'>OFF_T </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>in </span><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:NimbusRomNo9L-Regu;
color:blue'>21.1.2</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The type </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>mbstate_t </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>is defined in </span><span style='font-size:
10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>&lt;cwchar&gt;
</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>and can represent any of the conversion states
possible to occur in an implementation-defined set of supported multibyte
character encoding rules.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The two-argument member </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
CMTT10;color:black'>assign </span><span style='font-size:10.0pt;font-family:
NimbusRomNo9L-Medi;mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>is
defined identically to the built-in operator </span><span style='font-size:
10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:CMTT10;color:black'>=</span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>. The two-argument members </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
CMTT10;color:black'>eq </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>and </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
CMTT10;color:black'>lt </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>are defined identically to
the built-in operators </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;
mso-bidi-font-family:CMTT10;color:black'>== </span><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:NimbusRomNo9L-Regu;
color:black'>and </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;
mso-bidi-font-family:CMTT10;color:black'>&lt; </span><span style='font-size:
10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:NimbusRomNo9L-Regu;
color:black'>for type </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;
mso-bidi-font-family:CMTT10;color:black'>unsigned char</span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:#009A9A'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The member </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>eof() </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>returns </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>EOF</span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>.</span><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:NimbusRomNo9L-Medi;
color:black'><o:p></o:p></span></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>Add <o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu'>21.1.3.4 </span><span style='font-size:10.0pt;font-family:
CMTT10;mso-bidi-font-family:CMTT10;color:black'>struct char_traits&lt;signed
char&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
NimbusRomNo9L-Medi;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'>namespace
std {<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>template &lt;&gt;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>struct char_traits &lt;signed char &gt; {<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>typedef signed char char_type ;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>typedef int int_type ;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>typedef streamoff off_type ;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>typedef streampos pos_type ;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>typedef mbstate_t state_type ;<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static void assign ( char_type &amp; c1 ,
const char_type &amp; c2 );<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static bool eq( const char_type &amp; c1 ,
const char_type &amp; c2 );<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static bool lt( const char_type &amp; c1 ,
const char_type &amp; c2 );<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static int compare ( const char_type * s1 ,
const char_type * s2 , size_t n);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static size_t length ( const char_type *
s);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static const char_type * find ( const
char_type * s , size_t n,<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>const char_type &amp; a);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static char_type * move ( char_type * s1 ,
const char_type * s2 , size_t n);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
NimbusRomNo9L-Medi;color:black'><span style='mso-spacerun:yes'> </span></span><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'>static
char_type * copy ( char_type * s1 , const char_type * s2 , size_t n); <o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static char_type * assign ( char_type * s ,
size_t n , char_type a);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static int_type not_eof ( const int_type
&amp; c);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static char_type to_char_type ( const
int_type &amp; c);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static int_type to_int_type ( const
char_type &amp; c);<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static bool eq_int_type ( const int_type
&amp; c1 , const int_type &amp; c2 );<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>static int_type eof ();<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><span
style='mso-spacerun:yes'> </span>};<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'>}<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:9.0pt;font-family:CMTT9;mso-bidi-font-family:CMTT9;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The header </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>&lt;string&gt; </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>(</span><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:NimbusRomNo9L-Regu;
color:blue'>21.2</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>) declares a
specialization of the template struct </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>char_traits </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>for signed </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>char</span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>. It is for narroworiented iostream classes.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The defined types for </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>int_type</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>pos_type</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>off_type</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, and </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>state_type </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>are </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>int</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>streampos</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>streamoff</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>, and </span><span
style='font-size:10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;
color:black'>mbstate_t </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>respectively.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The type </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>streampos </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>is an implementation-defined type that
satisfies the requirements for </span><span style='font-size:10.0pt;font-family:
CMTT10;mso-bidi-font-family:CMTT10;color:black'>POS_T </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>in </span><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:NimbusRomNo9L-Regu;
color:blue'>21.1.2</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The type </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>streamoff </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>is an implementation-defined type that
satisfies the requirements for </span><span style='font-size:10.0pt;font-family:
CMTT10;mso-bidi-font-family:CMTT10;color:black'>OFF_T </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>in </span><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:NimbusRomNo9L-Regu;
color:blue'>21.1.2</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The type </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>mbstate_t </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>is defined in </span><span style='font-size:
10.0pt;font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>&lt;cwchar&gt;
</span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>and can represent any of the conversion states
possible to occur in an implementation-defined set of supported multibyte
character encoding rules.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The two-argument member </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
CMTT10;color:black'>assign </span><span style='font-size:10.0pt;font-family:
NimbusRomNo9L-Medi;mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>is
defined identically to the built-in operator </span><span style='font-size:
10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:CMTT10;color:black'>=</span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>. The two-argument members </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
CMTT10;color:black'>eq </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>and </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
CMTT10;color:black'>lt </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;
mso-bidi-font-family:NimbusRomNo9L-Regu;color:black'>are defined identically to
the built-in operators </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;
mso-bidi-font-family:CMTT10;color:black'>== </span><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:NimbusRomNo9L-Regu;
color:black'>and </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;
mso-bidi-font-family:CMTT10;color:black'>&lt; </span><span style='font-size:
10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:NimbusRomNo9L-Regu;
color:black'>for type </span><span style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;
mso-bidi-font-family:CMTT10;color:black'>unsigned char</span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:#009A9A'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>The member </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>eof() </span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>returns </span><span style='font-size:10.0pt;
font-family:CMTT10;mso-bidi-font-family:CMTT10;color:black'>EOF</span><span
style='font-size:10.0pt;font-family:NimbusRomNo9L-Regu;mso-bidi-font-family:
NimbusRomNo9L-Regu;color:black'>.</span><span style='font-size:10.0pt;
font-family:NimbusRomNo9L-Medi;mso-bidi-font-family:NimbusRomNo9L-Medi;
color:black'><o:p></o:p></span></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</body>

</html>
