Home | History | Annotate | Download | only in www
      1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      2           "http://www.w3.org/TR/html4/strict.dtd">
      3 <html>
      4 <head>
      5   <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      6   <title>Clang - C++ and C++'0x Status</title>
      7   <link type="text/css" rel="stylesheet" href="menu.css">
      8   <link type="text/css" rel="stylesheet" href="content.css">
      9   <style type="text/css">
     10     .category { background-color: #FFFFCC; text-align: center; }
     11     .na { background-color: #C0C0C0; text-align: center; }
     12     .broken { background-color: #C11B17 }
     13     .basic  { background-color: #F88017 }
     14     .medium { background-color: #FDD017 }
     15     .advanced { background-color: #347C17 }
     16     .complete { background-color: #00FF00 }
     17   </style>
     18 </head>
     19 <body>
     20 
     21 <!--#include virtual="menu.html.incl"-->
     22 
     23 <div id="content">
     24 
     25 <!--*************************************************************************-->
     26 <h1>C++ and C++'0x Support in Clang</h1>
     27 <!--*************************************************************************-->
     28 <p>Last updated: $Date$</p>
     29 
     30   <ul>
     31     <li><a href="#projects">Projects Building with Clang</a></li>
     32     <li><a href="#specification">Implementation Status by Section</a></li>
     33     <li><a href="#cxx0x">C++0x Status</a></li>
     34   </ul>
     35   
     36 <p>Clang currently implements all of the ISO C++ 1998 standard (including
     37   the defects addressed in the ISO C++ 2003 standard) except for 'export'
     38   (which has been removed from the C++'0x draft).
     39   The <a href="http://llvm.org/bugs/">LLVM bug tracker</a>
     40   contains a Clang C++ component that tracks known Clang C++ bugs.</p>
     41 
     42  <h2 id="projects">Projects Building with Clang</h2>
     43 
     44   <p>Clang is now capable of compiling large C++ projects, and the following
     45    table describes various projects that we have attempted to compile with
     46    Clang++.</p>
     47 
     48 <table width="689" border="1" cellspacing="0">
     49   <tr>
     50     <th>Project</th>
     51     <th>Status</th>
     52     <th>Last Tested</th>
     53     <th>Tracking Bug</th>
     54   </tr>
     55   <tr>
     56     <td><a href="http://clang.llvm.org">Clang</a> and <a href="http://llvm.org">LLVM</a></td>
     57     <td>Successful self-hosting achieved</td>
     58     <td>Continually</td>
     59     <td></td>
     60   </tr>
     61   <tr>
     62     <td><a href="http://www.cmake.org">CMake</a></td>
     63     <td>Compiles, passes regression tests (debug build)</td>
     64     <td>February 9, 2010</td>
     65     <td></td>
     66   </tr>
     67   <tr>
     68     <td><a href="http://www.boost.org">Boost</a></td>
     69     <td><a href="http://blog.llvm.org/2010/05/clang-builds-boost.html">Compiles
     70         and passes regression tests</a> on Darwin/X86-64.</td>
     71     <td>May 20, 2010</td>
     72     <td><a href="http://llvm.org/bugs/show_bug.cgi?id=6023"><del>PR6023</del></a></td>
     73   </tr>
     74   <tr>
     75     <td><a href="http://qt.nokia.com">Qt</a></td>
     76     <td>Partially compiles; miscompilation of uic prevents complete compilation, qmake works, some small examples also.</td>
     77     <td>February 9, 2010</td>
     78     <td><a href="http://llvm.org/bugs/show_bug.cgi?id=5881">PR5881</a></td>
     79   </tr>
     80 </table>
     81   
     82 <h2 id="cxx0x">C++0x Implementation status</h2>
     83 
     84 <p>Clang's development effort is focused primarily on fixing bugs in the current
     85 ISO C++ standard (1998/2003). This section tracks the status of various C++0x
     86 features.</p>
     87 
     88 <p>You can use clang in C++0x mode either
     89 with <a href="http://libcxx.llvm.org/">libc++</a> or with gcc's libstdc++.
     90 libstdc++-4.4 requires <a href="libstdc++4.4-clang0x.patch">a patch</a> to work
     91 with clang; other versions have not been tested.</p>
     92 
     93 
     94 <h2 id="specification">Implementation Status by Feature</h2>
     95 
     96 
     97 <!-- Within this table: The colors we're using to color-code our level
     98 of support for a given section:
     99 
    100        White (no background): not considered/tested.
    101        #C11B17: Broken.
    102        #F88017: Some useful examples work
    103        #FDD017: Many examples work
    104        #347C17: Nearly everything works
    105        #00FF00 + check mark: Implementation complete!
    106   -->
    107 
    108 <p>The following table is used to help track our implementation
    109   progress toward implementing the complete C++'0x standard. We use a
    110   simple, somewhat arbitrary color-coding scheme to describe the
    111   relative completeness of features:</p>
    112 
    113 <table width="689" border="1" cellspacing="0">
    114   <tr>
    115     <th>Not started/not evaluated</th>
    116     <th>Not Applicable</th>
    117     <th>Broken</th>
    118     <th>Some examples work</th>
    119     <th>Many examples work</th>
    120     <th>Nearly everything works</th>
    121     <th>Complete</th>
    122 <!--
    123     <th>Complete (with tests for each paragraph)</th>
    124 -->
    125   </tr>
    126   <tr>
    127     <td></td>
    128     <td class="na">N/A</td>
    129     <td class="broken"></td>
    130     <td class="basic"></td>
    131     <td class="medium"></td>
    132     <td class="advanced"></td>
    133     <td class="complete">rXXXXXX</td>
    134 <!--
    135     <td class="complete" align="center">&#x2713;</td>
    136 -->
    137   </tr>
    138 </table>
    139 
    140 <p>In addition, boxes marked with &#x2713 have complete and passing tests.
    141   Similarly, boxes marked with &#x2717 have complete tests, some of which
    142   are failing, and a <b>?</b> indicates partial tests while not making any
    143   statement about passing status.</p>
    144 
    145 <p>A feature is "complete" when the appropriate Clang component (Parse, AST,
    146 Sema, CodeGen) implements the behavior described in all of the
    147 paragraphs in the relevant C++'0x draft standard.  The major
    148 components are:</p>
    149 
    150 <dl>
    151   <dt>Parse</dt>
    152   <dd>Clang is able to parse the grammar of this feature (or the grammar
    153    described by this section), but does not necessarily do anything with the
    154    parsed result. Use Clang's <code>-fsyntax-only</code> option to parse C++
    155     programs.</dd>
    156 
    157   <dt>AST</dt>
    158   <dd>Clang builds an abstract syntax tree (AST) for the feature, but does not
    159   necessarily perform any type-checking. Use Clang's <code>-ast-print</code>
    160   option to print the resulting ASTs.</dd>
    161 
    162   <dt>Sema</dt>
    163   <dd>Clang parses and type-checks this feature and provides a well-formed AST
    164     annotated with types. Use Clang's <code>-fsyntax-only</code> to type-check
    165      code.</dd>
    166 
    167   <dt>CodeGen</dt>
    168   <dd>Clang parses, type-checks, and generates code for this feature, allowing
    169    one to compile and execute programs.</dd>
    170 </dl>
    171 
    172 <p>Updates to this table are welcome!  Tests for the various features are also
    173 welcome!</p>
    174 
    175 <table width="689" border="1" cellspacing="0">
    176 <tr><td colspan="7" align="center" bgcolor="#ffddaa">C++0x Features (current draft report <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3291.pdf">here</a>)</td>
    177 </tr>
    178   <tr>
    179     <th>Feature</th>
    180     <th>Parse</th>
    181     <th>AST</th>
    182     <th>Sema</th>
    183     <th>CodeGen</th>
    184     <th>Standard Sections</th>
    185     <th>Notes</th>
    186   </tr>
    187 <tr><td colspan="7" class="category">Control Flow Modifications</td></tr>
    188 <tr>
    189   <td>Range-based for loop</td>
    190   <td class="complete" align="center">&#x2713;</td>
    191   <td class="complete" align="center">&#x2713;</td>
    192   <td class="complete" align="center">&#x2713;</td>
    193   <td class="complete" align="center">&#x2713;</td>
    194   <td>6.5.4</td>
    195   <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2243.html">N2243</a>
    196       <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3271.htm">N3271</a></td>
    197 </tr>
    198 
    199 <tr><td colspan="7" class="category">Type System Modifications</td></tr>
    200 <tr>
    201   <td>rvalue references</td>
    202   <td class="complete" align="center"></td>
    203   <td class="complete" align="center"></td>
    204   <td class="complete" align="center"></td>
    205   <td class="complete"></td>
    206   <td>8.3.2</td>
    207   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html">N2118</a>,
    208     <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2831.html">N2831</a>    <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm">N2439</a>
    209   </td>
    210 </tr>
    211 <tr>
    212   <td>decltype</td>
    213   <td class="complete" align="center">&#x2713;</td>
    214   <td class="complete" align="center">&#x2713;</td>
    215   <td class="advanced" align="center"></td>
    216   <td class="advanced" align="center"></td>
    217   <td>7.1.6.2</td>
    218   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf">N2343</a>
    219       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1478.pdf">N1478</a>
    220       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1978.pdf">N1978</a>
    221   </td>
    222 </tr>
    223 <tr>
    224   <td>auto type deduction</td>
    225   <td class="complete" align="center">&#x2713;</td>
    226   <td class="complete" align="center">&#x2713;</td>
    227   <td class="complete" align="center">&#x2713;</td>
    228   <td class="complete" align="center">&#x2713;</td>
    229   <td>7.1.6.2, 7.1.6.4</td>
    230   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf">N1984</a></td>
    231 </tr>
    232 <tr>
    233   <td>nullptr</td>
    234   <td class="complete" align="center"></td>
    235   <td class="complete" align="center"></td>
    236   <td class="medium" align="center"></td>
    237   <td class="broken"></td>
    238   <td>2.14.7, 4.10, 4.11</td>
    239   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">N2431</a>
    240       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1488.pdf">N1488</a>
    241       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2214.pdf">N2214</a>
    242   </td>
    243 </tr>
    244 <tr>
    245   <td>enum classes</td>
    246   <td class="complete"></td>
    247   <td class="advanced"></td>
    248   <td class="advanced"></td>
    249   <td></td>
    250   <td>7.2</td>
    251   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1513.pdf">N1513</a>
    252       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf">N2347</a>
    253       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2499.pdf">N2499</a>
    254       Includes forward declaration capability
    255   </td>
    256 </tr>
    257 <tr>
    258   <td>long long</td>
    259   <td class="complete"></td>
    260   <td class="complete"></td>
    261   <td class="complete"></td>
    262   <td class="complete"></td>
    263   <td>3.9.1</td>
    264   <td>C99
    265       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf">N1811</a> 
    266   </td>
    267 </tr>
    268 <tr>
    269   <td>constexpr</td>
    270   <td></td>
    271   <td></td>
    272   <td></td>
    273   <td></td>
    274   <td>3.6.2, 3.9, 5.19, 7.1.5</td>
    275   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1521.pdf">N1521</a>
    276       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">N2235</a>
    277   </td>
    278 </tr>
    279 <tr>
    280   <td>char16_t/char32_t</td>
    281   <td class="medium"></td>
    282   <td class="medium"></td>
    283   <td class="medium"></td>
    284   <td class="medium"></td>
    285   <td></td>
    286   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html">N2249</a></td>
    287 </tr>
    288 <tr>
    289   <td>Unicode string literal types</td>
    290   <td></td>
    291   <td></td>
    292   <td></td>
    293   <td></td>
    294   <td>2.14.3, 2.14.5</td>
    295   <td></td>
    296 </tr>
    297 <tr>
    298   <td>Raw string literal types</td>
    299   <td></td>
    300   <td></td>
    301   <td></td>
    302   <td></td>
    303   <td>2.14.5</td>
    304   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2053.html">N2053</a>
    305       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.html">N2442</a>
    306       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf">N2378</a>
    307   </td>
    308 </tr>
    309 <tr>
    310   <td>user-defined literal types</td>
    311   <td></td>
    312   <td></td>
    313   <td></td>
    314   <td></td>
    315   <td>2.14.8</td>
    316   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf">N2378</a></td>
    317 </tr>
    318 <tr>
    319   <td>POD definition changes</td>
    320   <td></td>
    321   <td></td>
    322   <td></td>
    323   <td></td>
    324   <td>3.9, 9</td>
    325   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2294.html">N2294</a></td>
    326 </tr>
    327 <tr>
    328   <td>Unrestricted unions</td>
    329   <td></td>
    330   <td></td>
    331   <td></td>
    332   <td></td>
    333   <td>9.5</td>
    334   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf">N2544</a></td>
    335 </tr>
    336 <tr>
    337   <td>Tighter narrowing rules</td>
    338   <td></td>
    339   <td></td>
    340   <td></td>
    341   <td></td>
    342   <td>8.5.4</td>
    343   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf">N1890</a>
    344       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf">N2215</a>
    345       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf">N2640</a>
    346   </td>
    347 </tr>
    348 <tr><td colspan="7" class="category">Class Modifications</td></tr>
    349 <tr>
    350   <td>delegating constructors</td>
    351   <td class="complete"></td>
    352   <td class="complete"></td>
    353   <td class="complete"></td>
    354   <td class="complete"></td>
    355   <td>12.6.2</td>
    356   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986">N1986</a></td>
    357 </tr>
    358 <tr>
    359   <td>inheriting constructors</td>
    360   <td></td>
    361   <td></td>
    362   <td></td>
    363   <td></td>
    364   <td>12.9</td>
    365   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf">N1890</a>
    366       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1898.pdf">N1898</a>
    367       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2512.html">N2512</a>
    368   </td>
    369 </tr>
    370 <tr>
    371   <td>In-declaration member initialization</td>
    372   <td></td>
    373   <td></td>
    374   <td></td>
    375   <td></td>
    376   <td></td>
    377   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2628.html">N2628</a></td>
    378 </tr>
    379 <tr>
    380   <td>Changes to implicitly generated methods</td>
    381   <td></td>
    382   <td></td>
    383   <td></td>
    384   <td></td>
    385   <td></td>
    386   <td>Includes implicit generation of move operations</td>
    387 </tr>
    388 <tr>
    389   <td>defaulted methods</td>
    390   <td></td>
    391   <td></td>
    392   <td></td>
    393   <td></td>
    394   <td></td>
    395   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1717.pdf">N1717</a>
    396       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html">N2326</a>
    397   </td>
    398 </tr>
    399 <tr>
    400   <td>destructor defaults to noexcept</td>
    401   <td></td>
    402   <td></td>
    403   <td></td>
    404   <td></td>
    405   <td></td>
    406   <td></td>
    407 </tr>
    408 <tr>
    409   <td>sizeof on members without object instance</td>
    410   <td></td>
    411   <td></td>
    412   <td></td>
    413   <td></td>
    414   <td></td>
    415   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2150.html">N2150</a></td>
    416 </tr>
    417 <tr>
    418   <td>virtual function safety modifications</td>
    419   <td></td>
    420   <td></td>
    421   <td></td>
    422   <td></td>
    423   <td></td>
    424   <td></td>
    425 </tr>
    426 <tr>
    427   <td>Explicit conversion operators</td>
    428   <td class="complete" align="center"></td>
    429   <td class="basic" align="center"></td>
    430   <td class="basic" align="center"></td>
    431   <td class="broken"></td>
    432   <td>12.3</td>
    433   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf">N2437</a>
    434       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2333.html">N2333</a>
    435       No name mangling; ASTs don't contain calls to conversion operators</td>
    436 </tr>
    437 <tr><td colspan="7" class="category">Template Modifications</td></tr>
    438 <tr>
    439   <td>Right angle brackets</td>
    440   <td class="complete" align="center"></td>
    441   <td class="na" align="center">N/A</td>
    442   <td class="na" align="center">N/A</td>
    443   <td class="na">N/A</td>
    444   <td></td>
    445   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html">N1757</a></td>
    446 </tr>
    447 <tr>
    448   <td>variadic templates</td>
    449   <td class="complete" align="center"></td>
    450   <td class="complete" align="center"></td>
    451   <td class="complete" align="center"></td>
    452   <td class="complete" align="center"></td>
    453   <td>14.6.3</td>
    454   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2080.pdf">N2080</a>
    455       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2087.pdf">N2087</a>
    456     <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf">N2242</a>
    457     <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2488.pdf">N2488</a>
    458     <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf">N2555</a>
    459   </td>
    460 </tr>
    461 <tr>
    462   <td>template aliases</td>
    463   <td class="complete" align="center">&#x2713;</td>
    464   <td class="complete" align="center">&#x2713;</td>
    465   <td class="complete" align="center">&#x2713;</td>
    466   <td class="complete" align="center">&#x2713;</td>
    467   <td>7.1.3, 14.6.7</td>
    468   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1489.pdf">N1489</a>
    469       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf">N2258</a>
    470   </td>
    471 </tr>
    472 <tr>
    473   <td>Removal of export</td>
    474   <td class="complete"></td>
    475   <td class="na">N/A</td>
    476   <td class="na">N/A</td>
    477   <td class="na">N/A</td>
    478   <td></td>
    479   <td>This was never implemented in C++03</td>
    480 </tr>
    481 <tr>
    482   <td>extern templates</td>
    483   <td class="complete"></td>
    484   <td class="complete"></td>
    485   <td class="complete"></td>
    486   <td class="complete"></td>
    487   <td>14.8.2</td>
    488   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm">N1987</a></td>
    489 </tr>
    490 <tr>
    491   <td>Local classes as template parameters</td>
    492   <td></td>
    493   <td></td>
    494   <td></td>
    495   <td></td>
    496   <td></td>
    497   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2402.pdf">N2402</a>
    498       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm">N2657</a>
    499   </td>
    500 </tr>
    501 <tr><td colspan="7" class="category">Exception Modifications</td></tr>
    502 <tr>
    503   <td>Deprecation of exception specifications</td>
    504   <td></td>
    505   <td></td>
    506   <td></td>
    507   <td></td>
    508   <td>15.4</td>
    509   <td></td>
    510 </tr>
    511 <tr>
    512   <td>noexcept</td>
    513   <td class="complete" align="center">&#x2713;</td>
    514   <td class="complete" align="center">&#x2713;</td>
    515   <td class="complete" align="center">&#x2713;</td>
    516   <td class="na">N/A</td>
    517   <td>5.3.7, 15.4</td>
    518   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html">N3050</a></td>
    519 </tr>
    520 <tr><td colspan="7" class="category">Preprocessor Modifications</td></tr>
    521 <tr>
    522   <td>__STDC_HOSTED__</td>
    523   <td class="complete"></td>
    524   <td class="na">N/A</td>
    525   <td class="na">N/A</td>
    526   <td class="na">N/A</td>
    527   <td>16.8</td>
    528   <td>C99
    529       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
    530   </td>
    531 </tr>
    532 <tr>
    533   <td>_Pragma</td>
    534   <td class="complete"></td>
    535   <td class="na">N/A</td>
    536   <td class="na">N/A</td>
    537   <td class="na">N/A</td>
    538   <td>16.9</td>
    539   <td>C99
    540       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
    541   </td>
    542 </tr>
    543 <tr>
    544   <td>Variable argument macros</td>
    545   <td class="complete"></td>
    546   <td class="na">N/A</td>
    547   <td class="na">N/A</td>
    548   <td class="na">N/A</td>
    549   <td>16.3</td>
    550   <td>C99
    551       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
    552   </td>
    553 </tr>
    554 <tr>
    555   <td>Empty macro arguments</td>
    556   <td class="complete"></td>
    557   <td class="na">N/A</td>
    558   <td class="na">N/A</td>
    559   <td class="na">N/A</td>
    560   <td>16.3</td>
    561   <td>C99
    562       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
    563   </td>
    564 </tr>
    565 <tr>
    566   <td>__func__</td>
    567   <td class="complete"></td>
    568   <td class="na">N/A</td>
    569   <td class="na">N/A</td>
    570   <td class="na">N/A</td>
    571   <td>8.4.1</td>
    572   <td>C99
    573       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
    574   </td>
    575 </tr>
    576 <tr>
    577   <td>__cplusplus</td>
    578   <td class="complete"></td>
    579   <td class="na">N/A</td>
    580   <td class="na">N/A</td>
    581   <td class="na">N/A</td>
    582   <td>16.8</td>
    583   <td></td>
    584 </tr>
    585 <tr><td colspan="7" class="category">Things Completely New</td></tr>
    586 <tr>
    587   <td>Late-specified return type</td>
    588   <td class="complete" align="center">&#x2713;</td>
    589   <td class="complete" align="center">&#x2713;</td>
    590   <td class="complete" align="center">&#x2713;</td>
    591   <td class="na">N/A</td>
    592   <td>8.3.5</td>
    593   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2445.html">N2445</a></td>
    594 </tr>
    595 <tr>
    596   <td>lambda expressions</td>
    597   <td></td>
    598   <td></td>
    599   <td></td>
    600   <td></td>
    601   <td>5.1.2</td>
    602   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1968.htm">N1968</a>
    603       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf">N2550</a>
    604       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2859.pdf">N2859</a>
    605   </td>
    606 </tr>
    607 <tr>
    608   <td>Uniform initializers </td>
    609   <td></td>
    610   <td></td>
    611   <td></td>
    612   <td></td>
    613   <td>12.6</td>
    614   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf">N2215</a>
    615       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf">N2640</a>
    616   </td>
    617 </tr>
    618 <tr>
    619   <td>Memory model</td>
    620   <td></td>
    621   <td></td>
    622   <td></td>
    623   <td></td>
    624   <td>1.7</td>
    625   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2556.html">N2556</a></td>
    626 </tr>
    627 <tr><td colspan="7" class="category">Miscellania</td></tr>
    628 <tr>
    629   <td>Standard attribute syntax</td>
    630   <td></td>
    631   <td></td>
    632   <td></td>
    633   <td></td>
    634   <td></td>
    635   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2418.pdf">N2418</a></td>
    636 </tr>
    637 <tr>
    638   <td>alignment control</td>
    639   <td></td>
    640   <td></td>
    641   <td></td>
    642   <td></td>
    643   <td></td>
    644   <td></td>
    645 </tr>
    646 <tr>
    647   <td>Deleted functions</td>
    648   <td class="complete" align="center"></td>
    649   <td class="complete" align="center"></td>
    650   <td class="medium" align="center"></td>
    651   <td class="na">N/A</td>
    652   <td>8.4.3</td>
    653   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.htm">N2326</a></br>
    654       This also includes class methods.</td>
    655 </tr>
    656 <tr>
    657   <td>static_assert</td>
    658   <td class="complete" align="center"></td>
    659   <td class="complete" align="center"></td>
    660   <td class="advanced" align="center"></td>
    661   <td class="na">N/A</td>
    662   <td>7</td>
    663   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1381.htm">N1381</a>
    664       <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.pdf">N1720</a>
    665   </td>
    666 </tr>
    667 <tr>
    668   <td>Inline namespaces</td>
    669   <td class="complete" align="center">&#x2713;</td>
    670   <td class="complete" align="center">&#x2713;</td>
    671   <td class="complete" align="center">&#x2713;</td>
    672   <td class="complete" align="center">N/A</td>
    673   <td>7.3.1</td>
    674   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm">N2535</a></td>
    675 </tr>
    676 <tr>
    677   <td>thread_local storage</td>
    678   <td></td>
    679   <td></td>
    680   <td></td>
    681   <td></td>
    682   <td>3.7.2, 7.1.1</td>
    683   <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm">N2660</a></td>
    684 </tr>
    685 <tr><td colspan="7" class="category">Standard Library Modifications, see <a href="http://libcxx.llvm.org/index.html">libc++</a> or <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.200x">libstdc++</a> or <a href="http://blogs.msdn.com/b/vcblog/archive/2010/07/02/video-introduction-to-the-stl-part-1.aspx">VC++ 2010</a></td></tr>
    686 </table>
    687 <br />
    688 </div>
    689 </body>
    690 </html>
    691