blob: e7483e264f7aa047cda51a968487da0e5f8ee0d3 [file] [log] [blame]
Cedric Venet3d658642009-02-14 20:20:19 +00001<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
3<html>
4<head>
Gabor Greif70f2a042009-02-25 15:22:45 +00005 <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Chris Lattner900e32d2010-05-21 20:59:40 +00006 <title>Clang - C++ and C++'0x Status</title>
Gabor Greif70f2a042009-02-25 15:22:45 +00007 <link type="text/css" rel="stylesheet" href="menu.css">
8 <link type="text/css" rel="stylesheet" href="content.css">
Cedric Venet3d658642009-02-14 20:20:19 +00009 <style type="text/css">
Douglas Gregor08765a92010-12-21 05:43:31 +000010 .category { background-color: #FFFFCC; text-align: center; }
Douglas Gregor01cf1122009-05-12 18:36:58 +000011 .na { background-color: #C0C0C0; text-align: center; }
Cedric Venet3d658642009-02-14 20:20:19 +000012 .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<!--*************************************************************************-->
Chris Lattner900e32d2010-05-21 20:59:40 +000026<h1>C++ and C++'0x Support in Clang</h1>
Cedric Venet3d658642009-02-14 20:20:19 +000027<!--*************************************************************************-->
Douglas Gregor4c9b68f2009-06-27 19:33:58 +000028<p>Last updated: $Date$</p>
Cedric Venet3d658642009-02-14 20:20:19 +000029
Douglas Gregor57f1a002010-02-05 23:51:14 +000030 <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
Chris Lattner900e32d2010-05-21 20:59:40 +000036<p>Clang currently implements all of the ISO C++ 1998 standard (including
Chris Lattnerd3573f02010-05-21 21:16:21 +000037 the defects addressed in the ISO C++ 2003 standard) except for 'export'
38 (which has been removed from the C++'0x draft).
Chris Lattnerb7579aa2010-10-11 05:20:49 +000039 The <a href="http://llvm.org/bugs/">LLVM bug tracker</a>
Chris Lattner900e32d2010-05-21 20:59:40 +000040 contains a Clang C++ component that tracks known Clang C++ bugs.</p>
Douglas Gregor57f1a002010-02-05 23:51:14 +000041
Douglas Gregor15f2e722010-04-12 16:01:38 +000042 <h2 id="projects">Projects Building with Clang</h2>
Douglas Gregor57f1a002010-02-05 23:51:14 +000043
Chris Lattner900e32d2010-05-21 20:59:40 +000044 <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>
Douglas Gregor57f1a002010-02-05 23:51:14 +000047
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>
Douglas Gregor95e636c2010-02-09 16:36:17 +000062 <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>
Chris Lattner900e32d2010-05-21 20:59:40 +000068 <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>
Gabor Greif0ca08af2010-08-26 14:20:18 +000072 <td><a href="http://llvm.org/bugs/show_bug.cgi?id=6023"><del>PR6023</del></a></td>
Chris Lattner900e32d2010-05-21 20:59:40 +000073 </tr>
74 <tr>
Anton Korobeynikov555d04f2010-02-09 16:50:54 +000075 <td><a href="http://qt.nokia.com">Qt</a></td>
Anton Korobeynikov04881242010-02-09 16:46:25 +000076 <td>Partially compiles; miscompilation of uic prevents complete compilation, qmake works, some small examples also.</td>
Douglas Gregor95e636c2010-02-09 16:36:17 +000077 <td>February 9, 2010</td>
78 <td><a href="http://llvm.org/bugs/show_bug.cgi?id=5881">PR5881</a></td>
79 </tr>
Douglas Gregor57f1a002010-02-05 23:51:14 +000080</table>
81
Chris Lattner900e32d2010-05-21 20:59:40 +000082<h2 id="cxx0x">C++0x Implementation status</h2>
83
84<p>Clang's development effort is focused primarily on fixing bugs in the current
85ISO C++ standard (1998/2003). This section tracks the status of various C++0x
Chris Lattnera4b46cc2010-05-21 21:02:17 +000086features.</p>
Chris Lattner900e32d2010-05-21 20:59:40 +000087
Jeffrey Yasskin46ba01a2011-03-29 22:27:50 +000088<p>You can use clang in C++0x mode either
89with <a href="http://libcxx.llvm.org/">libc++</a> or with gcc's libstdc++.
90libstdc++-4.4 requires <a href="libstdc++4.4-clang0x.patch">a patch</a> to work
91with clang; other versions have not been tested.</p>
92
Chris Lattner900e32d2010-05-21 20:59:40 +000093
94<h2 id="specification">Implementation Status by Feature</h2>
Cedric Venet3d658642009-02-14 20:20:19 +000095
96
97<!-- Within this table: The colors we're using to color-code our level
98of 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
Chris Lattner900e32d2010-05-21 20:59:40 +0000109 progress toward implementing the complete C++'0x standard. We use a
Cedric Venet3d658642009-02-14 20:20:19 +0000110 simple, somewhat arbitrary color-coding scheme to describe the
Chris Lattner900e32d2010-05-21 20:59:40 +0000111 relative completeness of features:</p>
Cedric Venet3d658642009-02-14 20:20:19 +0000112
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>
Douglas Gregor07554022009-05-12 17:55:28 +0000121 <th>Complete</th>
Douglas Gregor08765a92010-12-21 05:43:31 +0000122<!--
Douglas Gregor07554022009-05-12 17:55:28 +0000123 <th>Complete (with tests for each paragraph)</th>
Douglas Gregor08765a92010-12-21 05:43:31 +0000124-->
Cedric Venet3d658642009-02-14 20:20:19 +0000125 </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>
Douglas Gregor08765a92010-12-21 05:43:31 +0000133 <td class="complete">rXXXXXX</td>
134<!--
Cedric Venet3d658642009-02-14 20:20:19 +0000135 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000136-->
Cedric Venet3d658642009-02-14 20:20:19 +0000137 </tr>
138</table>
139
Douglas Gregor08765a92010-12-21 05:43:31 +0000140<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
Cedric Venet3d658642009-02-14 20:20:19 +0000145<p>A feature is "complete" when the appropriate Clang component (Parse, AST,
146Sema, CodeGen) implements the behavior described in all of the
Chris Lattner900e32d2010-05-21 20:59:40 +0000147paragraphs in the relevant C++'0x draft standard. The major
148components are:</p>
Cedric Venet3d658642009-02-14 20:20:19 +0000149
150<dl>
151 <dt>Parse</dt>
Chris Lattner900e32d2010-05-21 20:59:40 +0000152 <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>
Cedric Venet3d658642009-02-14 20:20:19 +0000156
157 <dt>AST</dt>
Chris Lattner900e32d2010-05-21 20:59:40 +0000158 <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>
Cedric Venet3d658642009-02-14 20:20:19 +0000161
162 <dt>Sema</dt>
Chris Lattner900e32d2010-05-21 20:59:40 +0000163 <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>
Cedric Venet3d658642009-02-14 20:20:19 +0000166
167 <dt>CodeGen</dt>
Chris Lattner900e32d2010-05-21 20:59:40 +0000168 <dd>Clang parses, type-checks, and generates code for this feature, allowing
169 one to compile and execute programs.</dd>
Cedric Venet3d658642009-02-14 20:20:19 +0000170</dl>
171
Chris Lattner900e32d2010-05-21 20:59:40 +0000172<p>Updates to this table are welcome! Tests for the various features are also
Cedric Venet3d658642009-02-14 20:20:19 +0000173welcome!</p>
174
175<table width="689" border="1" cellspacing="0">
Richard Smith5f3d30b2011-04-15 14:38:27 +0000176<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>
Chris Lattner900e32d2010-05-21 20:59:40 +0000177</tr>
Cedric Venet3d658642009-02-14 20:20:19 +0000178 <tr>
Chris Lattner900e32d2010-05-21 20:59:40 +0000179 <th>Feature</th>
Cedric Venet3d658642009-02-14 20:20:19 +0000180 <th>Parse</th>
181 <th>AST</th>
182 <th>Sema</th>
183 <th>CodeGen</th>
Douglas Gregor08765a92010-12-21 05:43:31 +0000184 <th>Standard Sections</th>
Cedric Venet3d658642009-02-14 20:20:19 +0000185 <th>Notes</th>
186 </tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000187<tr><td colspan="7" class="category">Control Flow Modifications</td></tr>
188<tr>
189 <td>Range-based for loop</td>
Richard Smith5f3d30b2011-04-15 14:38:27 +0000190 <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>
Douglas Gregor08765a92010-12-21 05:43:31 +0000194 <td>6.5.4</td>
Richard Smith5f3d30b2011-04-15 14:38:27 +0000195 <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>
Douglas Gregor08765a92010-12-21 05:43:31 +0000197</tr>
Douglas Gregor6d507a62009-05-07 17:50:16 +0000198
Douglas Gregor08765a92010-12-21 05:43:31 +0000199<tr><td colspan="7" class="category">Type System Modifications</td></tr>
Sebastian Redl6e8ed162009-05-10 18:38:11 +0000200<tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000201 <td>rvalue references</td>
Douglas Gregor07554022009-05-12 17:55:28 +0000202 <td class="complete" align="center"></td>
203 <td class="complete" align="center"></td>
Douglas Gregord1a26432011-01-26 21:35:14 +0000204 <td class="complete" align="center"></td>
205 <td class="complete"></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000206 <td>8.3.2</td>
207 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html">N2118</a>,
Douglas Gregord1a26432011-01-26 21:35:14 +0000208 <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>
Douglas Gregor08765a92010-12-21 05:43:31 +0000209 </td>
Sebastian Redl6e8ed162009-05-10 18:38:11 +0000210</tr>
211<tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000212 <td>decltype</td>
Anders Carlsson3eb43a02009-06-24 22:10:19 +0000213 <td class="complete" align="center">&#x2713;</td>
214 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor28f03962010-09-17 21:37:49 +0000215 <td class="advanced" align="center"></td>
Richard Smithf184f9a2011-05-05 22:07:51 +0000216 <td class="advanced" align="center"></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000217 <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>
Richard Smith6a4e73c2011-04-03 14:12:46 +0000225 <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>
Douglas Gregor08765a92010-12-21 05:43:31 +0000229 <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>
Douglas Gregorbe7a1d32011-07-21 17:41:00 +0000236 <td class="advanced" align="center"></td>
237 <td class="advanced"></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000238 <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>
Douglas Gregor28f03962010-09-17 21:37:49 +0000295 <td></td>
296</tr>
297<tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000298 <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>
Chris Lattnerfc8f0e12011-04-15 05:22:18 +0000319 <td>POD definition changes</td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000320 <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>
Sean Hunt059ce0d2011-05-01 07:04:31 +0000351 <td class="complete"></td>
352 <td class="complete"></td>
353 <td class="complete"></td>
354 <td class="complete"></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000355 <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>
Douglas Gregor4c9131a2011-01-19 22:11:50 +0000449 <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>
Douglas Gregor08765a92010-12-21 05:43:31 +0000453 <td>14.6.3</td>
Douglas Gregor4c9131a2011-01-19 22:11:50 +0000454 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2080.pdf">N2080</a>
Douglas Gregor08765a92010-12-21 05:43:31 +0000455 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2087.pdf">N2087</a>
Douglas Gregor4c9131a2011-01-19 22:11:50 +0000456 <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>
Douglas Gregord1a26432011-01-26 21:35:14 +0000458 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf">N2555</a>
Douglas Gregor08765a92010-12-21 05:43:31 +0000459 </td>
460</tr>
461<tr>
462 <td>template aliases</td>
Richard Smith3e4c6c42011-05-05 21:57:07 +0000463 <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>
Douglas Gregor08765a92010-12-21 05:43:31 +0000467 <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>
Douglas Gregor08765a92010-12-21 05:43:31 +0000470 </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>
Douglas Gregord1a26432011-01-26 21:35:14 +0000483 <td class="complete"></td>
484 <td class="complete"></td>
485 <td class="complete"></td>
486 <td class="complete"></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000487 <td>14.8.2</td>
Douglas Gregord1a26432011-01-26 21:35:14 +0000488 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm">N1987</a></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000489</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>
Douglas Gregor28f03962010-09-17 21:37:49 +0000513 <td class="complete" align="center">&#x2713;</td>
514 <td class="complete" align="center">&#x2713;</td>
Anders Carlsson3eb43a02009-06-24 22:10:19 +0000515 <td class="complete" align="center">&#x2713;</td>
516 <td class="na">N/A</td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000517 <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>
Douglas Gregor29236f42011-03-27 09:49:38 +0000523 <td class="complete"></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000524 <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>
Douglas Gregor1ce79652010-12-21 05:54:22 +0000587 <td>Late-specified return type</td>
Richard Smith6a4e73c2011-04-03 14:12:46 +0000588 <td class="complete" align="center">&#x2713;</td>
589 <td class="complete" align="center">&#x2713;</td>
590 <td class="complete" align="center">&#x2713;</td>
Richard Smithf184f9a2011-05-05 22:07:51 +0000591 <td class="na">N/A</td>
Douglas Gregor1ce79652010-12-21 05:54:22 +0000592 <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>
Douglas Gregor08765a92010-12-21 05:43:31 +0000596 <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>
Anders Carlsson3eb43a02009-06-24 22:10:19 +0000644 <td></td>
645</tr>
Douglas Gregor28f03962010-09-17 21:37:49 +0000646<tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000647 <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>
Douglas Gregor28f03962010-09-17 21:37:49 +0000669 <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>
Douglas Gregor08765a92010-12-21 05:43:31 +0000673 <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>
Douglas Gregor28f03962010-09-17 21:37:49 +0000675</tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000676<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>
Cedric Venet3d658642009-02-14 20:20:19 +0000686</table>
Douglas Gregor01cf1122009-05-12 18:36:58 +0000687<br />
Cedric Venet3d658642009-02-14 20:20:19 +0000688</div>
689</body>
690</html>