
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">


/* default css */

table {
  font-size: 1em;
  line-height: inherit;
}


tr {
  
  text-align: left;
  
}


div, address, ol, ul, li, option, select { 
  margin-top: 0px;
  margin-bottom: 0px;
}

p {
  margin: 0px;
}

body {
  margin: 6px;
  padding: 0px;
  font-family: Verdana, sans-serif;
  font-size: 10pt;
  background-color: #ffffff;
}


img {
  -moz-force-broken-image-icon: 1;
}

@media screen {
  html.pageview {
    background-color: #f3f3f3 !important;
  }

  
    
  body { 
    min-height: 1100px; 
  }
  * html body { 
    height: 1100px; 
  }
  .pageview body {
    border-top: 1px solid #ccc;
    border-left: 1px solid #ccc;
    border-right: 2px solid #bbb;
    border-bottom: 2px solid #bbb;
    width: 648px !important;
    margin: 15px auto 25px;
    padding: 40px 50px; 
  }
  /* IE6 */
  * html {
    overflow-y: scroll;
  }
  * html.pageview body {
    overflow-x: auto;
  }
  /* Prevent repaint errors when scrolling in Safari. This "Star-7" css hack
     targets Safari 3.1, but not WebKit nightlies and presumably Safari 4.
     That's OK because this bug is fixed in WebKit nightlies/Safari 4 :-). */
  html*#wys_frame::before {
    content: '\A0';
    position: fixed;
    overflow: hidden;
    width: 0;
    height: 0;
    top: 0;
    left: 0;
  }
  
  

  

}

h6 { font-size: 10pt }
h5 { font-size: 11pt }
h4 { font-size: 12pt }
h3 { font-size: 13pt }
h2 { font-size: 14pt }
h1 { font-size: 16pt }

blockquote {padding: 10px; border: 1px #DDD dashed }

a img {border: 0}

.pb {height: 1px}

div.google_header, div.google_footer {
  position: relative;
  margin-top: 1em;
  margin-bottom: 1em;
}


/* Table of contents */
.editor div.writely-toc {
  background-color: #f3f3f3;
  border: 1px solid #ccc;
}
.writely-toc > ol {
  padding-left: 3em;
  font-weight: bold;
}
ol.writely-toc-subheading {
  padding-left: 1em;
  font-weight: normal;
}
/* IE6 only */
* html writely-toc ol {
  list-style-position: inside;
}
.writely-toc-none {
  list-style-type: none;
}
.writely-toc-decimal {
  list-style-type: decimal;
}
.writely-toc-upper-alpha {
  list-style-type: upper-alpha;
}
.writely-toc-lower-alpha {
  list-style-type: lower-alpha;
}
.writely-toc-upper-roman {
  list-style-type: upper-roman;
}
.writely-toc-lower-roman {
  list-style-type: lower-roman;
}
.writely-toc-disc {
  list-style-type: disc;
}

/* end default css */


  /* default print css */
  
  @media print {
    body { 
      padding: 0; 
      margin: 0; 
    }

    div.google_header, div.google_footer {
      display: block;
      min-height: 0;
      border: none;
    }

    div.google_header {
      flow: static(header);
    }

    /* used to insert page numbers */
    div.google_header::before, div.google_footer::before {
      position: absolute;
      top: 0;
    }

    div.google_footer {
      flow: static(footer);
    }

    /* always consider this element at the start of the doc */
    div#google_footer {
      flow: static(footer, start);
    }

    span.google_pagenumber {
      content: counter(page);
    }

    span.google_pagecount {
      content: counter(pages);
    }


    callout.google_footnote {
      
      display: prince-footnote;
      footnote-style-position: inside;
    }

    /* Table of contents */
    #WritelyTableOfContents a::after {
      content: leader('.') target-counter(attr(href), page);
    }

    #WritelyTableOfContents a {
      text-decoration: none;
      color: black;
    }
  }

  @page {
    @top {
      content: flow(header);
    }
    @bottom {
      content: flow(footer);
    }
    @footnotes {
      border-top: solid black thin;
      padding-top: 8pt;
    }
  }
  /* end default print css */
 

/* custom css */


/* end custom css */



  /* ui edited css */
  
  body {
    font-family: Verdana;
    
    font-size: 10.0pt;
    line-height: normal;
    background-color: #ffffff;
  }
  /* end ui edited css */



/* editor CSS */
.editor a:visited {color: #551A8B}
.editor table.zeroBorder {border: 1px dotted gray}
.editor table.zeroBorder td {border: 1px dotted gray}
.editor table.zeroBorder th {border: 1px dotted gray}


.editor div.google_header, .editor div.google_footer {
  border: 2px #DDDDDD dashed;
  position: static;
  width: 100%;
  min-height: 2em;
}

.editor .misspell {background-color: yellow}


.editor .pb {
  border-top: 1px dashed #C0C0C0; 
  border-bottom: 1px dashed #C0C0C0
}
.editor .writely-comment {
  font-size: 9pt; 
  line-height: 1.4; 
  padding: 1px; 
  border: 1px dashed #C0C0C0
}


/* end editor CSS */
</style>


<base target="_top">


</head>

<body onload="DoPageLoad();"
    
    revision="dc2632k9_5ds8kvgfb:240">

    
    
<br id=w7sm>
<p dir=ltr id=wx2g7 style="TEXT-ALIGN:left; FONT-FAMILY:Arial">
  <font id=wx2g8 size=2>Document: N2733=08-0243</font>
</p>
<p dir=ltr id=wx2g9 style="TEXT-ALIGN:left; FONT-FAMILY:Arial">
  <font id=wx2g10 size=2>Date: 2008-08-22</font>
</p>
<p dir=ltr id=wx2g17 style="TEXT-ALIGN:left; FONT-FAMILY:Arial">
  <font id=wx2g18 size=2>Authors: Benjamin Kosnik &lt;bkoz@redhat.com&gt;</font>
</p>
<p dir=ltr id=w7sm1 style=TEXT-ALIGN:left>
  <br id=w7sm2>
</p>
<p dir=ltr id=w7sm3 style=TEXT-ALIGN:left>
  <font id=w7sm4 size=3 style=FONT-FAMILY:Arial><b id=w7sm5><font id=ok:0 size=4>Appendix
  C: ISO C++ 2003 Compatibility</font><br id=ok:00>
  </b></font>
</p>
<p dir=ltr id=ok:01 style=TEXT-ALIGN:left>
  <br id=ok:02>
</p>
<p dir=ltr id=ok:03 style=TEXT-ALIGN:left>
  <font id=ok:04 size=2><b id=ok:05><font id=opps size=3>General organization
  and editorial
  suggestio<font id=ei98 size=3>ns</font></font></b></font><br id=ok:06>
</p>
<br id=avru0>
<p dir=ltr id=avru1 style=TEXT-ALIGN:left>
  This paper proposes a new section in Appendix C for compatibility between ISO
  C++ 2003 and ISO C++200x.<br id=cqre>
</p>
<br id=di7y>
Because of the significant added text in this section, a re-organization of
Appendix C is advised. Suggest collapsing<br id=o6gt>
<br id=di7y2>
<p dir=ltr id=w7sm6 style=TEXT-ALIGN:left>
  C.1 C++ and ISO C
</p>
<p dir=ltr id=h-ou style=TEXT-ALIGN:left>
  and
</p>
<p dir=ltr id=ztjy style=TEXT-ALIGN:left>
  C.2 Standard C library
</p>
<br id=hyhv>
<p dir=ltr id=hyhv0 style=TEXT-ALIGN:left>
  into one grouping for both language and library features, such that
</p>
<br id=j8xh>
<p dir=ltr id=hyhv5 style=TEXT-ALIGN:left>
  C.1 C++ and ISO C<br id=o1e2>
  C.1.1 Clause 2: lexical conventions
</p>
<p dir=ltr id=o1e20 style=TEXT-ALIGN:left>
  ...<br id=o1e21>
</p>
<p dir=ltr id=o1e22 style=TEXT-ALIGN:left>
  C.1.9 Clause 16: preprocessing directives [diff.cpp]<br id=o1e23>
</p>
<br id=j8xh0>
<p dir=ltr id=j8xh1 style=TEXT-ALIGN:left>
  remain as-is, and then
</p>
<p dir=ltr id=j8xh3 style=TEXT-ALIGN:left>
  <br id=j8xh4>
</p>
<p dir=ltr id=j8xh5 style=TEXT-ALIGN:left>
  C.1.10 Clause 18
</p>
<p dir=ltr id=xh4g style=TEXT-ALIGN:left>
  C.1.11 Clause 20<br id=xh4g0>
</p>
<p dir=ltr id=xh4g1 style=TEXT-ALIGN:left>
  C.1.11 Clause 21
</p>
<br id=m:7j>
<p dir=ltr id=m:7j0 style=TEXT-ALIGN:left>
  are added, and the contents of<br id=m:7j1>
</p>
<br id=m:7j2>
<p dir=ltr id=m:7j3 style=TEXT-ALIGN:left>
  C.2.1
</p>
<p dir=ltr id=m:7j4 style=TEXT-ALIGN:left>
  C.2.2
</p>
<p dir=ltr id=m:7j5 style=TEXT-ALIGN:left>
  C.2.3
</p>
<p dir=ltr id=m:7j6 style=TEXT-ALIGN:left>
  C.2.4
</p>
<p dir=ltr id=m:7j7 style=TEXT-ALIGN:left>
  <br id=m:7j8>
</p>
<p dir=ltr id=m:7j9 style=TEXT-ALIGN:left>
  are moved into the appropriate place in C.1.*. Consider this an editorial
  suggestion.<br id=q7i6>
</p>
<br id=rsor>
<p dir=ltr id=rsor0 style=TEXT-ALIGN:left>
  Then, start with the C++2003 Compatibility with
</p>
<p dir=ltr id=q7i60 style=TEXT-ALIGN:left>
  <br id=q7i61>
</p>
<p dir=ltr id=q7i62 style=TEXT-ALIGN:left>
  C.2 C++ and ISO C++2003
</p>
<br id=uu13>
<p dir=ltr id=uu130 style=TEXT-ALIGN:left>
  And the rest of the text as is follows in this document.
</p>
<p dir=ltr id=uu131 style=TEXT-ALIGN:left>
  <br id=uu132>
</p>
<p dir=ltr id=uu133 style=TEXT-ALIGN:left>
  If this arrangement is considered poor, then the existing layout can be used
  and C.3 C++ and ISO C++2003 can be used instead, and the text of this document
  can be added with the obvious transformation for whatever approved numbering
  scheme is in effect by the editor.
</p>
<font id=yvgp size=2><b id=yvgp0><br id=xzfb>
<font id=opps0 size=3>Proposed wording</font><br id=nwz_>
<br id=nwz_0>
</b></font>C.2 C++ and ISO C++2003 [diff.iso.c++03]<br id=eyp9>
<br id=krff>
The following subclauses list the differences between this version of C++ and
the previous version of ISO C++ (ISO/IEC 14882:2003 Programming Languages -
C++), by the chapters of this document.<br id=eyp91>
<br id=z1ki>
<br id=grc9>
C.2.1 Clause 2 lexical conventions<br id=cn65>
<br id=cn650>
2.11<br id=mqri>
<b id=lwec1>Change:</b> New Keywords<br id=lwec3>
<b id=lwec4>Rationale:</b> Required for new features.<br id=lwec5>
<b id=lwec6>Effect on original feature:</b> Added to Table 3, the following
identifiers are new keywords: alignas, alignof, char16_t, char32_t, constexpr,
decltype,&nbsp; nullptr, static_cast, and thread_local. Valid C++03 code using
these identifiers is invalid in C++0x.<br id=kubp>
<br id=z1ki0>
<br id=eyp92>
C.2.2 Clause 14 templates<br id=nx3y>
<br id=lwec>
14.3<br id=lwec0>
<b id=mqri0>Change:</b> Remove whitespace requirement for nested closing
template right angle brackets<br id=mqri1>
<b id=mqri2>Rationale:</b> Considered a persistent, but minor, annoyance.
Template aliases representing nonclass types would exacerbate whitespace issues.<br id=mqri3>
<b id=mqri4>Effect on original feature:</b> Change to semantics of well-defined
expression. A valid C++03 expression containing a right angle bracket ('&gt;')
followed immediately by another right angle bracket may now be treated as
closing two templates.<br id=z0o:>
<br id=xwi_0>
For example:<br id=opps1>
<br id=opps2>
The following code is valid in C++03 (because
"<span id=opps3 style="FONT-FAMILY:Courier New">&gt;&gt;</span>" is a
right-shift operator) but invalid in C++0x (because the
"<span id=opps4 style="FONT-FAMILY:Courier New">&gt;&gt;</span>" closes two
templates:
<p id=opps5>
</p>
<br id=trm9>
<span id=i2vz style="FONT-FAMILY:Courier New">&nbsp;&nbsp;&nbsp;&nbsp;template&lt;typename
T&gt; struct X { };</span><br id=trm90 style="FONT-FAMILY:Courier New">
<span id=i2vz0 style="FONT-FAMILY:Courier New">&nbsp;&nbsp;&nbsp;&nbsp;template&lt;int
N&gt; struct Y { };</span><br id=trm91 style="FONT-FAMILY:Courier New">
<span id=i2vz1 style="FONT-FAMILY:Courier New">&nbsp;&nbsp;&nbsp;&nbsp;X&lt;
Y&lt; 1 &gt;&gt; 2 &gt; &gt; x;</span><br id=opps9>
<p dir=ltr id=iaqn0 style=TEXT-ALIGN:left>
  <br id=c1yq>
</p>
<p dir=ltr id=c1yq0 style=TEXT-ALIGN:left>
  <br id=z1ki1>
</p>
<p dir=ltr id=z1ki2 style=TEXT-ALIGN:left>
  C.2.3 Clause 17 library introduction
</p>
<br id=z1ki3>
<p dir=ltr id=aq9q1 style=TEXT-ALIGN:left>
  17.4.1.3<br id=vazj0>
</p>
<p dir=ltr id=vazj1 style=TEXT-ALIGN:left>
  <b id=kubp2>Change:</b> New includes.<br id=kubp3>
  <b id=kubp4>Rationale:</b> New functionality.<br id=kubp5>
  <b id=kubp6>Effect on original feature:</b> The following C++ include files
  are new: array, chrono, initializer_list, mutex, random, ratio, regex,
  sytem_error, and threads. In addition, the following C compatibility include
  files are new: ccomplex, cfenv, cinttypes, cstdbool, cstdint, ctgmath, and
  cuchar. Valid C++03 code that includes files with these names may be invalid
  in C++0x.<br id=fixq>
</p>
<br id=lgmw>
<p dir=ltr id=fixq0 style=TEXT-ALIGN:left>
  17.4.3.1.2<br id=y3do>
</p>
<p dir=ltr id=y3do0 style=TEXT-ALIGN:left>
</p>
<p dir=ltr id=nqxs style=TEXT-ALIGN:left>
  <b id=nqxs0>Change:</b> New reserved namespace.<br id=nqxs1>
  <b id=nqxs2>Rationale:</b> New functionality.<br id=nqxs3>
  <b id=nqxs4>Effect on original feature:</b> The global namespace posix is now
  reserved for standardization. Valid C++03 code that used a top-level posix
  namespace may be invalid in C++0x.<br id=nqxs5>
</p>
<br id=nqxs6>
<p dir=ltr id=nqxs7 style=TEXT-ALIGN:left>
  <br id=nqxs8>
</p>
<p dir=ltr id=fixq2 style=TEXT-ALIGN:left>
  C.2.4 Clause 18 library support
</p>
<br id=p0g9>
<p dir=ltr id=rc580 style=TEXT-ALIGN:left>
  18.7
</p>
<p dir=ltr id=rc581 style=TEXT-ALIGN:left>
  18.8<br id=anf40>
</p>
<p dir=ltr id=xbi. style=TEXT-ALIGN:left>
  <b id=hc9i3>Change:</b> New reserved identifiers.<br id=hc9i4>
  <b id=hc9i5>Rationale:</b> Required by new features.<br id=hc9i6>
  <b id=hc9i7>Effect on original feature: </b>Valid C++03 code that uses these
  identifiers may be invalid in C++0x.
</p>
<p dir=ltr id=anf41 style=TEXT-ALIGN:left>
  New identifiers, by include file:<br id=i3v9>
</p>
<br id=i3v90>
<p dir=ltr id=i3v91 style=TEXT-ALIGN:left>
  &lt;exception&gt;<br id=i3v92>
</p>
<p dir=ltr id=i3v93 style=TEXT-ALIGN:left>
  nested_exception, exception_ptr, current_exception, rethrow_exception,
  copy_exception, throw_with_nested, and rethrow_if_nested.
</p>
<br id=wkza>
<p dir=ltr id=wkza0 style=TEXT-ALIGN:left>
  &lt;initializer_list&gt;
</p>
<p dir=ltr id=wkza1 style=TEXT-ALIGN:left>
  initializer_list
</p>
<br id=u2oi>
<p dir=ltr id=u2oi0 style=TEXT-ALIGN:left>
  <br id=urpz0>
</p>
<p dir=ltr id=ngx90 style=TEXT-ALIGN:left>
  18.5.1.1<br id=fixq4>
  <b id=fixq5>Change:</b> Linking new/delete operators.<br id=so20>
</p>
<p dir=ltr id=so200 style=TEXT-ALIGN:left>
  <b id=so201>Rationale:</b> Two throwing single-object signatures form base for
  other operators, clarifies that replacing these two changes others. Tighter
  requirements increase portability.<br id=fixq8>
</p>
<p dir=ltr id=so202 style=TEXT-ALIGN:left>
  <b id=fixq9>Effect on original feature:</b> Valid C++03 code that replaces
  global new/delete operators may execute differently in C++0x.<br id=izlz>
</p>
<br id=izlz0>
<p dir=ltr id=izlz1 style=TEXT-ALIGN:left>
  For example:<br id=izlz2>
</p>
<pre id=izlz3 style="FONT-FAMILY:Courier New">&nbsp;&nbsp;&nbsp;&nbsp;#include &lt;cstdio&gt;<br id=izlz4>&nbsp;&nbsp;&nbsp;&nbsp;#include &lt;cstdlib&gt;<br id=izlz5>&nbsp;&nbsp;&nbsp;&nbsp;#include &lt;new&gt;<br id=izlz6><br id=izlz7>&nbsp;&nbsp;&nbsp;&nbsp;void* operator new(std::size_t size) throw(std::bad_alloc)<br id=izlz8>&nbsp;&nbsp;&nbsp;&nbsp;{<br id=izlz9>    &nbsp;&nbsp;&nbsp;&nbsp;std::printf("custom allocation\n");<br id=izlz10>    &nbsp;&nbsp;&nbsp;&nbsp;if (size == 0)<br id=izlz11>        &nbsp;&nbsp;&nbsp;&nbsp;size = 1;<br id=izlz12>    &nbsp;&nbsp;&nbsp;&nbsp;void*p = std::malloc(size);<br id=izlz13>    &nbsp;&nbsp;&nbsp;&nbsp;if (p == 0)<br id=izlz14>        &nbsp;&nbsp;&nbsp;&nbsp;throw std::bad_alloc();<br id=izlz15>    &nbsp;&nbsp;&nbsp;&nbsp;return p;<br id=izlz16>&nbsp;&nbsp;&nbsp;&nbsp;}<br id=izlz17><br id=izlz18>&nbsp;&nbsp;&nbsp;&nbsp;void  operator delete(void* ptr) throw()<br id=izlz19>&nbsp;&nbsp;&nbsp;&nbsp;{<br id=izlz20>    &nbsp;&nbsp;&nb!
 sp;&nbsp;std::printf("custom deallocation\n");<br id=izlz21>    &nbsp;&nbsp;&nbsp;&nbsp;std::free(ptr);<br id=izlz22>&nbsp;&nbsp;&nbsp;&nbsp;}<br id=izlz23><br id=izlz24>&nbsp;&nbsp;&nbsp;&nbsp;int main()<br id=izlz25>&nbsp;&nbsp;&nbsp;&nbsp;{<br id=izlz27>    &nbsp;&nbsp;&nbsp;&nbsp;int* i = new int;<br id=izlz28>    &nbsp;&nbsp;&nbsp;&nbsp;delete i;<br id=izlz30>    &nbsp;&nbsp;&nbsp;&nbsp;int* a = new int[3];<br id=izlz31>    &nbsp;&nbsp;&nbsp;&nbsp;delete [] a;<br id=izlz33>&nbsp;&nbsp;&nbsp;&nbsp;}</pre>
<br id=kute2>
<p dir=ltr id=izlz34 style=TEXT-ALIGN:left>
</p>
<p dir=ltr id=sjzi2 style=TEXT-ALIGN:left>
  C.2.5 Clause 19 diagnostics
</p>
<br id=hmdx>
19.4
<p dir=ltr id=hmdx3 style=TEXT-ALIGN:left>
  <b id=hmdx4>Change:</b> New reserved identifiers.<br id=hmdx5>
  <b id=hmdx6>Rationale:</b> Required by new features.<br id=hmdx7>
  <b id=hmdx8>Effect on original feature: </b>Valid C++03 code that uses these
  identifiers may be invalid in C++0x. New identifiers, by include file:<br id=hmdx9>
</p>
<br id=zids>
&lt;system_error&gt;<br id=zids0>
error_category, error_code, error_condition, system_error, is_error_code_enum,
is_error_condition_enum, make_error_code, and make_error_condition.<br id=t892>
<br id=kute3>
<p dir=ltr id=nt_z1 style=TEXT-ALIGN:left>
  19.3<br id=mx:10>
</p>
<p dir=ltr id=mx:11 style=TEXT-ALIGN:left>
  <b id=u7dq7>Change:</b> Thread-local error numbers.<br id=u7dq8>
  <b id=u7dq9>Rationale:</b> Support new thread facilities.<br id=u7dq10>
  <b id=u7dq11>Effect on original feature: </b>Valid but implementation-defined
  C++-03 code that relies on errno being the same across threads may change
  behavior in C++-0x.
</p>
<p dir=ltr id=hc9i style=TEXT-ALIGN:left>
  <br id=dza->
</p>
<p dir=ltr id=dza-0 style=TEXT-ALIGN:left>
  <br id=wtm:>
</p>
<p dir=ltr id=wtm:0 style=TEXT-ALIGN:left>
  C.2.6 Clause 20 utilities<br id=wtm:1>
</p>
<br id=o8bj>
20.1<br id=wtm:2>
20.3<br id=vl2s>
20.4<br id=vl2s0>
20.5<br id=hlqf>
20.7<br id=vl2s1>
20.8<br id=vl2s2>
<p dir=ltr id=wtm:3 style=TEXT-ALIGN:left>
  <b id=wtm:4>Change:</b> New reserved identifiers.<br id=wtm:5>
  <b id=wtm:6>Rationale:</b> Required by new features.<br id=wtm:7>
  <b id=wtm:8>Effect on original feature: </b>Valid C++03 code that uses these
  identifiers may be invalid in C++0x. New identifiers, by include file:<br id=wtm:9>
</p>
<br id=u2oi1>
&lt;chrono&gt;<br id=eehu>
chrono<br id=hlqf0>
<br id=hlqf1>
&lt;memory&gt;<br id=hlqf2>
allocator_tag_t, allocator_arg_t, allocator_arg, uses_allocator,
is_scoped_allocator, constructible_with_allocator_suffix,
constructible_with_allocator_prefix, allocator_propagate_never,
allocator_propagate_on_copy_construction,
allocator_propagate_on_move_assignment, allocator_propagate_on_copy_assignment,
allocator_propagation_map, scoped_allocator_adaptor, construct_element,
default_delete, unique_ptr, bad_weak_ptr, shared_ptr, static_pointer_cast,
dynamic_pointer_cast, const_pointer_cast, get_deleter, weak_ptr,
enable_shared_from_this, pointer_safety, declare_reachable, undeclare_reachable,
declare_no_pointers, undeclare_no_pointers, get_pointer_safety, align,
atomic_is_lock_free, atomic_load, atomic_load_explicit, atomic_store,
atomic_store_explicit, atomic_exchange, atomic_exchange_explicit,
atomic_compare_exchange, atomic_compare_exchange_explicit<br id=u2oi2>
<br id=u2oi3>
&lt;ratio&gt;<br id=u2oi4>
ratio, ratio_add, ratio_subtract, ratio_multiply, ratio_divide, ratio_equal,
ratio_not_equal, ratio_less, ratio_less_equal, ratio_greater,
ratio_greater_equal, yocto, zepto, atto, femto, pico, nano, micro, milli, centi,
deci, deca, hecto, kilo, mega, giga, tera, peta, exa, zetta, and yotta.<br id=ds.y>
<br id=wtm:10>
&lt;tuple&gt;<br id=oaah>
tuple, uses_allocator, constructible_with_allocator_prefix<br id=wtm:11>
<br id=wtm:12>
&lt;type_traits&gt;<br id=wtm:13>
<p dir=ltr id=q4t93 style=TEXT-ALIGN:left>
  <span id=q4t94 style=COLOR:#000000>integral_constant, true_type, false_type,
  is_void, is_integral, is_floating_point, is_array, is_pointer,
  is_lvalue_reference, is_rvalue_reference, is_member_object_pointer,
  is_member_function_pointer, is_enum, is_union, is_class, is_function,
  is_reference, is_arithmetic, is_fundamental, is_member_pointer, is_scalar,
  is_object, is_compound, is_const, is_volatile, is_trivial, is_standard_layout,
  is_pod, is_empty, is_polymorphic, is_abstract, remove_const, remove_volatile,
  remove_cv, add_const, add_volatile, add_cv, remove_reference, add_reference,
  remove_pointer, add_pointer, is_signed, is_unsigned, rank, extent,
  remove_extent, remove_all_extents, has_trivial_default_contructor,
  has_trivial_copy_constructor, has_trivial_assign, has_trivial_destructor,
  has_nothrow_default_constructor, has_nothrow_copy_constructor,
  has_nothrow_assign, has_virtual_destructor, is_same, is_base_of,
  is_convertible,&nbsp; aligned_storage, aligned_union, decay, enable_if,
  conditional, common_type<br id=pppf>
  </span>
</p>
<br id=rnre>
<p dir=ltr id=wtm:16 style=TEXT-ALIGN:left>
  &lt;utility&gt;
</p>
tuple_size, tuple_element, get<br id=o8bj0>
<p dir=ltr id=o8bj1 style=TEXT-ALIGN:left>
  <br id=o8bj2>
</p>
<br id=s0hc>
<p dir=ltr id=wtm:18 style=TEXT-ALIGN:left>
  C.2.7 Clause 21 strings
</p>
<br id=jgv5>
<p dir=ltr id=td-g style=TEXT-ALIGN:left>
  21.2<br id=jgv50>
</p>
<p dir=ltr id=jgv51 style=TEXT-ALIGN:left>
  <b id=jgv52>Change:</b> New reserved identifiers.<br id=jgv53>
  <b id=jgv54>Rationale:</b> Required by new features.<br id=jgv55>
  <b id=jgv56>Effect on original feature: </b>Valid C++03 code that uses these
  identifiers may be invalid in C++0x. New identifiers, by include file:<br id=jgv57>
</p>
<br id=lt1:>
&lt;string&gt;<br id=lt1:0>
u16string, u32string, stoi, stol, stoul, stoll, stoull, stof, stod, stold,
to_string, to_wstring<br id=x_cq1>
<br id=s0hc0>
<br id=x_cq2>
<p dir=ltr id=x_cq3 style=TEXT-ALIGN:left>
</p>
<p dir=ltr id=x_cq4 style=TEXT-ALIGN:left>
  C.2.8 Clause 23 containers<br id=x_cq5>
</p>
<p dir=ltr id=qxcq style=TEXT-ALIGN:left>
  <br id=qxcq0>
</p>
<p dir=ltr id=qxcq1 style=TEXT-ALIGN:left>
  23.2<br id=x_cq6>
</p>
<p dir=ltr id=nvr8 style=TEXT-ALIGN:left>
  23.4<br id=nvr80>
</p>
<p dir=ltr id=nvr81 style=TEXT-ALIGN:left>
  <b id=nvr82>Change:</b> New reserved identifiers.<br id=nvr83>
  <b id=nvr84>Rationale:</b> Required by new features.<br id=nvr85>
  <b id=nvr86>Effect on original feature: </b>Valid C++03 code that uses these
  identifiers may be invalid in C++0x. New identifiers, by include file:<br id=nvr87>
</p>
<br id=nvr88>
<p dir=ltr id=hgdt1 style=TEXT-ALIGN:left>
  &lt;array&gt;
</p>
<p dir=ltr id=o.58 style=TEXT-ALIGN:left>
  array, tuple_element, tuple_size, get
</p>
<br id=v3.4>
<p dir=ltr id=o.580 style=TEXT-ALIGN:left>
  &lt;forward_list&gt;
</p>
<p dir=ltr id=v3.40 style=TEXT-ALIGN:left>
  forward_list
</p>
<p dir=ltr id=v3.41 style=TEXT-ALIGN:left>
  <br id=o.581>
</p>
<p dir=ltr id=ahhb style=TEXT-ALIGN:left>
  &lt;unordered_map&gt;
</p>
<p dir=ltr id=a::i style=TEXT-ALIGN:left>
  unordered_map, unordered_multimap<br id=a::i0>
</p>
<p dir=ltr id=a::i1 style=TEXT-ALIGN:left>
  <br id=a::i2>
</p>
<p dir=ltr id=ahhb0 style=TEXT-ALIGN:left>
  &lt;unordered_set&gt;
</p>
<p dir=ltr id=ahhb1 style=TEXT-ALIGN:left>
</p>
<p dir=ltr id=a::i3 style=TEXT-ALIGN:left>
  unordered_set, unordered_multiset
</p>
<br id=wenk>
<p dir=ltr id=a::i5 style=TEXT-ALIGN:left>
</p>
<p dir=ltr id=nvr810 style=TEXT-ALIGN:left>
  <br id=hgdt2>
</p>
<p dir=ltr id=hgdt3 style=TEXT-ALIGN:left>
  C.2.9 Clause 25 algorithms
</p>
<p dir=ltr id=hgdt4 style=TEXT-ALIGN:left>
  <br id=hgdt5>
</p>
<p dir=ltr id=hgdt6 style=TEXT-ALIGN:left>
</p>
<p dir=ltr id=nvr811 style=TEXT-ALIGN:left>
  25<br id=nvr812>
</p>
<p dir=ltr id=nvr813 style=TEXT-ALIGN:left>
  <b id=nvr814>Change:</b> New reserved identifiers.<br id=nvr815>
  <b id=nvr816>Rationale:</b> Required by new features.<br id=nvr817>
  <b id=nvr818>Effect on original feature: </b>Valid C++03 code that uses these
  identifiers may be invalid in C++0x. New identifiers, by include file:<br id=nvr819>
</p>
<br id=otbd>
<p dir=ltr id=opps11 style=TEXT-ALIGN:left>
  &lt;algorithm&gt;
</p>
<p dir=ltr id=otbd0 style=TEXT-ALIGN:left>
  all_of, any_of, none_of, find_if_not, copy_n, copy_if, partition_copy,
  partition_point<br id=k:021>
</p>
<br id=mcno>
<p dir=ltr id=k:022 style=TEXT-ALIGN:left>
  <br id=v4rj>
</p>
<p dir=ltr id=v4rj0 style=TEXT-ALIGN:left>
  C.2.10 Clause 26 numerics
</p>
<p dir=ltr id=v4rj1 style=TEXT-ALIGN:left>
  <br id=v4rj2>
</p>
<p dir=ltr id=v4rj3 style=TEXT-ALIGN:left>
</p>
<p dir=ltr id=v4rj4 style=TEXT-ALIGN:left>
  26.4.2<br id=v4rj5>
</p>
<p dir=ltr id=v4rj6 style=TEXT-ALIGN:left>
  <b id=v4rj7>Change:</b> New reserved identifiers.<br id=v4rj8>
  <b id=v4rj9>Rationale:</b> Required by new features.<br id=v4rj10>
  <b id=v4rj11>Effect on original feature: </b>Valid C++03 code that uses these
  identifiers may be invalid in C++0x. New identifiers, by include file:<br id=v4rj12>
</p>
<br id=v4rj13>
<p dir=ltr id=v4rj14 style=TEXT-ALIGN:left>
  &lt;random&gt;
</p>
<p dir=ltr id=v4rj15 style=TEXT-ALIGN:left>
</p>
<span id=ire0 style=COLOR:#000000>linear_congruential_engine,
mersenne_twister_engine, subtract_with_carry_engine, discard_block_engine,
independent_bits_engine, shuffle_order_engine, minstd_rand0, minstd_rand,
mt19937, ranlux24_base, ranlux48_bse, ranlux24, ranlux48, knuth_b,
default_random_engine, random_device, seed_seq, generate_cannonical,
uniform_int_distribution, uniform_real_distribution, bernoulli_distribution,
binomial_distribution, geometric_distribution, negative_binomial_distribution,
poisson_distribution, exponential_distribution, gamma_distribution,
weibull_distribution, extreme_value_distribution, normal_distribution,
lognormal_distribution, chi_squared_distribution, cauchy_distribution,
fisher_f_distribution, student_t_distribution, discrete_distribution,
piecewise_constant_distribution, general_pdf_distribution<br id=ire00>
</span><br id=v4rj16>
<p dir=ltr id=mcno1 style=TEXT-ALIGN:left>
  <br id=v4rj17>
</p>
<p dir=ltr id=nm5h0 style=TEXT-ALIGN:left>
  C.2.11 Clause 27 io<br id=i58b>
</p>
<br id=pru1>
27.4.1<br id=i58b0>
<p dir=ltr id=i58b1 style=TEXT-ALIGN:left>
  <b id=ffb41>Change:</b> Change ios_base:: types that are bitmasks to be an
  enumeration with constexpr overloads.<br id=ffb42>
  <b id=ffb43>Rationale:</b> All bitmask types should be defined as enumerations
  with mask operators implemented as constexpr functions.<br id=ffb44>
  <b id=ffb45>Effect on original feature:</b> Define ios_base::fmtflags,
  ios_base::iostate, ios_base::openmode, ios_base::seekdir as enumerations.<br id=i58b2>
</p>
<p dir=ltr id=i58b3 style=TEXT-ALIGN:left>
  Some code that depended on the implementation properties of these types being
  std::bitset or a builtin integer type may no longer compile.
</p>
<p dir=ltr id=l.gl style=TEXT-ALIGN:left>
  <br id=l.gl0>
</p>
<p dir=ltr id=l.gl1 style=TEXT-ALIGN:left>
  For example:
</p>
<br id=l.gl2>
<p dir=ltr id=l.gl3 style=TEXT-ALIGN:left>
  &nbsp;<span id=g644 style="FONT-FAMILY:Courier New">&nbsp;&nbsp;&nbsp;#include
  &lt;iostream&gt;</span>
</p>
<span id=x-n50 style="FONT-FAMILY:Courier New">&nbsp;&nbsp;&nbsp;&nbsp;std::cout.setf(17);
// should be
std::cout.setf(hex);</span><br id=l.gl4 style="FONT-FAMILY:Courier New">
<p dir=ltr id=l.gl5 style=TEXT-ALIGN:left>
  <br id=l.gl6>
</p>
<p dir=ltr id=l.gl7 style=TEXT-ALIGN:left>
  <br id=l.gl8>
</p>
<p dir=ltr id=r6qg style=TEXT-ALIGN:left>
  C.2.12 Clause 28 regex
</p>
<p dir=ltr id=r6qg0 style=TEXT-ALIGN:left>
  <br id=r6qg1>
</p>
<p dir=ltr id=r6qg2 style=TEXT-ALIGN:left>
</p>
<p dir=ltr id=r6qg3 style=TEXT-ALIGN:left>
  28.4<br id=r6qg4>
</p>
<p dir=ltr id=r6qg5 style=TEXT-ALIGN:left>
  <b id=r6qg6>Change:</b> New reserved identifiers.<br id=r6qg7>
  <b id=r6qg8>Rationale:</b> Required by new features.<br id=r6qg9>
  <b id=r6qg10>Effect on original feature: </b>Valid C++03 code that uses these
  identifiers may be invalid in C++0x. New identifiers, by include file:<br id=r6qg11>
</p>
<br id=r6qg12>
<p dir=ltr id=r6qg13 style=TEXT-ALIGN:left>
  &lt;regex&gt;
</p>
<p dir=ltr id=l.gl9 style=TEXT-ALIGN:left>
</p>
regex_constants, regex_error, regex_traits, basic_regex, regex, wregex,
sub_match, csub_match, wcsub_match, ssub_match, wssub_match, match_results,
cmatch, wcmatch, smatch, wsmatch, regex_match, regex_search, regex_replace,
regex_iterator, cregex_iterator, wcregex_iterator, sregex_iterator,
wsregex_iterator, regex_token_iterator, cregex_token_iterator,
wcregex_token_iterator, sregex_token_iterator, wsregex_token_iterator.<br id=r6qg14>
<br id=go10>
<br id=r6qg15>
<p dir=ltr id=r6qg16 style=TEXT-ALIGN:left>
  C.2.13 Clause 29 atomics<br id=qp_i>
</p>
<p dir=ltr id=r6qg17 style=TEXT-ALIGN:left>
  <br id=r6qg18>
</p>
<p dir=ltr id=r6qg19 style=TEXT-ALIGN:left>
</p>
<p dir=ltr id=r6qg20 style=TEXT-ALIGN:left>
  29.0<br id=r6qg21>
</p>
<p dir=ltr id=r6qg22 style=TEXT-ALIGN:left>
  <b id=r6qg23>Change:</b> New reserved identifiers.<br id=r6qg24>
  <b id=r6qg25>Rationale:</b> Required by new features.<br id=r6qg26>
  <b id=r6qg27>Effect on original feature: </b>Valid C++03 code that uses these
  identifiers may be invalid in C++0x. New identifiers, by include file:<br id=r6qg28>
</p>
<br id=r6qg29>
<p dir=ltr id=r6qg30 style=TEXT-ALIGN:left>
  &lt;cstdatomic&gt;
</p>
<p dir=ltr id=r6qg31 style=TEXT-ALIGN:left>
</p>
memory_order, kill_dependency, atomic_flag, atomic_flag_test_and_set,
atomic_flag_test_and_set_explicit, atomic_flag_clear,
atomic_flag_clear_explicit, atomic_flag_fence,
atomic_global_fence_compatibility, atomic_is_lock_free, atomic_store,
atomic_store_explicit, atomic_load, atomic_load_explicit, atomic_exchange,
atomic_exchange_explicit, atomic_compare_exchange,
atomic_compare_exchange_explicit, atomic_fence, atomic_fence, atomic_fetch_add,
atomic_fetch_add_explicit, atomic_fetch_sub, atomic_fetch_sub_explicit, atomic,
atomic_address, atomic_bool, atomic_char, atomic_schar, atomic_uchar,
atomic_short, atomic_ushort, atomic_int, atomic_uint, atomic_long, atomic_ulong,
atomic_llong, atomic_ullong, atomic_wchar_t, atomic_char16_t, atomic_char32_t<br id=r6qg32>
<br id=trrt>
<br id=r6qg33>
<p dir=ltr id=r6qg34 style=TEXT-ALIGN:left>
  C.2.14 Clause 30 threads
</p>
<p dir=ltr id=r6qg37 style=TEXT-ALIGN:left>
</p>
<br id=trrt0>
<p dir=ltr id=iwb01 style=TEXT-ALIGN:left>
  30.2
</p>
<p dir=ltr id=iwb02 style=TEXT-ALIGN:left>
  30.3
</p>
<p dir=ltr id=iwb03 style=TEXT-ALIGN:left>
  30.4<br id=r6qg39>
</p>
<p dir=ltr id=r6qg40 style=TEXT-ALIGN:left>
  <b id=r6qg41>Change:</b> New reserved identifiers.<br id=r6qg42>
  <b id=r6qg43>Rationale:</b> Required by new features.<br id=r6qg44>
  <b id=r6qg45>Effect on original feature: </b>Valid C++03 code that uses these
  identifiers may be invalid in C++0x. New identifiers, by include file:<br id=r6qg46>
</p>
<br id=r6qg47>
<p dir=ltr id=r6qg48 style=TEXT-ALIGN:left>
  &lt;thread&gt;
</p>
<p dir=ltr id=r6qg49 style=TEXT-ALIGN:left>
</p>
thread, this_thread<br id=o31:>
<p dir=ltr id=i58b4 style=TEXT-ALIGN:left>
  <br id=zzle>
</p>
<p dir=ltr id=zzle0 style=TEXT-ALIGN:left>
  &lt;mutex&gt;
</p>
<p dir=ltr id=zzle1 style=TEXT-ALIGN:left>
  mutex, recursive_mutex, timed_mutex, recursive_timed_mutex, defer_lock_t,
  try_to_lock_t, adopt_lock_t, defer_lock, try_to_lock, adopt_lock, try_lock,
  lock, once_flag, call_once
</p>
<br id=lsnv>
<p dir=ltr id=lsnv0 style=TEXT-ALIGN:left>
  &lt;condition_variable&gt;
</p>
<p dir=ltr id=lsnv1 style=TEXT-ALIGN:left>
  condition_variable, condition_variable_any
</p>
<br id=xp7d>
<p dir=ltr id=o31:15 style=TEXT-ALIGN:left>
  <br id=i58b5>
</p>
<font id=w5or0 size=3><b id=w5or1><font id=ok:09 size=3>References</font><br id=w5or2>
<br id=w5or3>
</b></font> Benjamin Kosnik<span class=lg id=d7of style=FONT-WEIGHT:normal>,
Matt Austern</span>, "Incompatible Changes in C++0x," N2270=07-0130<br id=kenu>
<br id=kenu0>
Jens Maurer, "Requirements on programs and backwards compatibility," N2693
08-0203<br id=yj_v>
<br id=yj_v0>
Daveed Vandevoorde, "Right Angle Brackets," N1757=05-0017<br id=cn6z>
<br id=cn6z0>
Gabriel Dos Reis, Bjarne Stroustrup, "Constant Expressions in the Standard
Library - Revision 2," N2349=07-0209<br id=mf1h>
<br id=mf1h0>
Howard Hinnant, "LWG Issue 206: Linking new/delete operators," N2158=07-0018<br id=yr1g>
<br id=yr1g0>
Pete Becker, "Draft Programing Languages - C++," N2691<br id=japw>
<br id=japw0>
Lawrence Crowl, "Thread-Local Storage," N2659=08-0169<br id=k-1b>
<br id=k-1b0>
John Spicer, J. Stephen Adamczyk, "Solving the SFINAE problem for expressions,"
N2634=08-0144<br id=xled>
<br id=xled0>
Matt Austern, "STL singly linked lists (revision 3)," N2543=08-0053<br id=gymf>
<br id=gymf0>
<p dir=ltr id=hyhv10 style=TEXT-ALIGN:left>
  <br id=hyhv11>
</p>
<p dir=ltr id=w7sm8 style=TEXT-ALIGN:left>
</p>
<br id=tkuo>