[wwwdocs][C++0x] Revamped C++0x status page
Doug Gregor
doug.gregor@gmail.com
Wed Jan 2 13:49:00 GMT 2008
This is a revamped C++0x status page. It is intended to act both as a
scoreboard for us in our efforts to implement C++0x and as a handy
reference to users containing a list of all of the new language
features in C++0x and which versions of GCC (if any) support those
features. As far as I know, the list is completely in sync with
mainline GCC and its experimental C++0x mode. I'll wait two days, and
commit if there are no complaints.
- Doug
<html>
<head>
<title>C++0x Language Support in GCC</title>
<style type="text/css">
/* <![CDATA[*/
address {text-align: right}
tr.separator { background: #ffffcc}
/* ]]> */
</style>
</head>
<body>
<h1>C++0x Language Support in GCC</h1>
<p>C++0x is the working name of the next ISO C++ standard, due by
the end of this decade, which introduces a host of new features into
the standard C++ language and library. This project seeks to
implement new C++0x features in GCC and to make it one of the first
compilers to bring C++0x to C++ programmers.</p>
<p>C++0x features are available as part of the "mainline" GCC
compiler in the trunk of
<a href="http://gcc.gnu.org/svn.html">GCC's Subversion
repository</a> and in GCC 4.3 and later. To enable C++0x
support, add the command-line parameter <code>-std=c++0x</code>
to your <code>g++</code> command line. Or, to enable GNU
extensions in addition to C++0x extensions,
add <code>-std=gnu++0x</code> to your <code>g++</code> command
line.</p>
<p><b>Important</b>: because the ISO C++0x draft is still evolving,
GCC's support for C++0x is <b>experimental</b>. No attempt will be
made to maintain backward compatibility with implementations of
C++0x features that do not reflect the final C++0x standard.</p>
<h2>C++0x Language Features in GCC</h2>
<p>The following table lists new language features that have been
accepted into the C++0x draft standard. The "Proposal" column
provides a link to the ISO C++ committee proposal that describes the
feature, while the "Available in GCC?" column indicates the first
version of GCC that contains an implementation of this feature (if
it has been implemented). For the most complete and up-to-date
information about new language features in C++0x, please see
the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/">ISO
C++ Committee Papers</a> and look for the most recent "State of C++
Evolution" paper by Alisdair Meridith. </p>
<table border="1">
<tr class="separator">
<th>Language Feature</th>
<th>Proposal</th>
<th>Available in GCC?</th>
</tr>
<tr>
<td>Rvalue references</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html">N2118</a></td>
<td align="center"><a
href="http://gcc.gnu.org/gcc-4.3/changes.html">GCC 4.3</a></td>
</tr>
<tr>
<td> Rvalue references for <code>*this</code></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm">N2439</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Variadic templates</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf">N2242</a></td>
<td align="center"><a href="http://gcc.gnu.org/gcc-4.3/changes.html">GCC
4.3</a></td>
</tr>
<tr>
<td>Static assertions</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html">N1720</a></td>
<td align="center"><a
href="http://gcc.gnu.org/gcc-4.3/changes.html">GCC 4.3</a></td>
</tr>
<tr>
<td><code>auto</code>-typed variables</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf">N1984</a></td>
<td align="center">No</td>
</tr>
<tr>
<td> Multi-declarator <code>auto</code></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf">N1737</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Declared type of an expression</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf">N2343</a></td>
<td align="center"><a href="http://gcc.gnu.org/gcc-4.3/changes.html">GCC
4.3</a></td>
</tr>
<tr>
<td>Right angle brackets</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html">N1757</a></td>
<td align="center"><a href="http://gcc.gnu.org/gcc-4.3/changes.html">GCC
4.3</a></td>
</tr>
<tr>
<td>Default template arguments for function templates</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226">DR226</a></td>
<td align="center"><a href="http://gcc.gnu.org/gcc-4.3/changes.html">GCC
4.3</a></td>
</tr>
<tr>
<td>Template aliases</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf">N2258</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Extern templates</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm">N1987</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Null pointer constant</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">N2431</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Strongly-type enums</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf">N2437</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Generalized constant expressions</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">N2235</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Alignment support</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf">N2341</a></td>
<td align="center">No</td>
</tr>
<!-- Skipped N1627: Conditionally-support behavior -->
<!-- Skipped N1727: Changing Undefined Behavior into Diagnosable --
-- Errors -->
<tr>
<td>Delegating constructors</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf">N1986</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Explicit conversion operators</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.html">N2437</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>New character types</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html">N2249</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Raw and Unicode string literals</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.html">N2442</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Extended PODs</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.html">N2342</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Initialization of class objects by rvalues</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html">N1610</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Extended friend declarations</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf">N1791</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Extending <code>sizeof</code></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html">N2253</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Universal character name literals</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html">N2170</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Defaulted and deleted functions</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.html">N2346</a></td>
<td align="center">No</td>
</tr>
<tr class="separator">
<th align="center" colspan="3">Concurrency</th>
</tr>
<tr>
<td>Sequence points</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.htm">N2239</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Atomic operations</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html">N2427</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Memory model</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm">N2429</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Copying and rethrowing exceptions</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html">N2179</a></td>
<td align="center">No</td>
</tr>
<tr>
<td>Abandoning a process</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm">N2440</a></td>
<td align="center">No</td>
</tr>
<tr class="separator">
<th align="center" colspan="3">C99 Features in C++0x</th>
</tr>
<tr>
<td><code>__func__</code> predefined identifier</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.html">N2340</a></td>
<td align="center"><a href="http://gcc.gnu.org/gcc-4.3/changes.html">GCC
4.3</a></td>
</tr>
<tr>
<td>C99 preprocessor</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm">N1653</a></td>
<td align="center"><a href="http://gcc.gnu.org/gcc-4.3/changes.html">GCC
4.3</a></td>
</tr>
<tr>
<td><code>long long</code></td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf">N1811</a></td>
<td align="center"><a href="http://gcc.gnu.org/gcc-4.3/changes.html">GCC
4.3</a></td>
</tr>
<tr>
<td>Extended integral types</td>
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf">N1988</a></td>
<td align="center">No</td>
</tr>
</table>
<h2>Status by GCC Release</h2>
<ul>
<li><a href="../gcc-4.3/cxx0x_status.html">GCC 4.3</a></li>
</ul>
<h2>Development Process</h2>
<p>Development of C++0x features occurs both on a dedicated C++0x
branch and in the mainline compiler. Contributors are encouraged to
submit their patches for the mainline compiler; we will also pick up
the patches for the C++0x branch. Please put <code>[C++0x]</code> in
the subject of your message to identify C++0x features.</p>
<p>When committing to the C++0x branch, please append ChangeLog
entries to ChangeLog.cxx0x in the root of the branch.</p>
</body>
</html>
More information about the Gcc-patches
mailing list