blob: eaf951cd723307fc326c639ecbeac867cfe63863 [file] [log] [blame]
Cedric Venet084381332009-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 Greifdd4ddf12009-02-25 15:22:45 +00005 <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Chris Lattner6fe37482010-05-21 20:59:40 +00006 <title>Clang - C++ and C++'0x Status</title>
Gabor Greifdd4ddf12009-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 Venet084381332009-02-14 20:20:19 +00009 <style type="text/css">
Douglas Gregor6b6e0822010-12-21 05:43:31 +000010 .category { background-color: #FFFFCC; text-align: center; }
Douglas Gregor9e0d21a2009-05-12 18:36:58 +000011 .na { background-color: #C0C0C0; text-align: center; }
Cedric Venet084381332009-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 Lattner6fe37482010-05-21 20:59:40 +000026<h1>C++ and C++'0x Support in Clang</h1>
Cedric Venet084381332009-02-14 20:20:19 +000027<!--*************************************************************************-->
Douglas Gregor0799d912009-06-27 19:33:58 +000028<p>Last updated: $Date$</p>
Cedric Venet084381332009-02-14 20:20:19 +000029
Douglas Gregorbb26a922010-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 Lattner6fe37482010-05-21 20:59:40 +000036<p>Clang currently implements all of the ISO C++ 1998 standard (including
Chris Lattnerb9ea2c22010-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 Lattnera45ebd22010-10-11 05:20:49 +000039 The <a href="http://llvm.org/bugs/">LLVM bug tracker</a>
Chris Lattner6fe37482010-05-21 20:59:40 +000040 contains a Clang C++ component that tracks known Clang C++ bugs.</p>
Douglas Gregorbb26a922010-02-05 23:51:14 +000041
Douglas Gregor61c1ac22010-04-12 16:01:38 +000042 <h2 id="projects">Projects Building with Clang</h2>
Douglas Gregorbb26a922010-02-05 23:51:14 +000043
Chris Lattner6fe37482010-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 Gregorbb26a922010-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 Gregorfa186e92010-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 Lattner6fe37482010-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 Greife4d36a22010-08-26 14:20:18 +000072 <td><a href="http://llvm.org/bugs/show_bug.cgi?id=6023"><del>PR6023</del></a></td>
Chris Lattner6fe37482010-05-21 20:59:40 +000073 </tr>
74 <tr>
Anton Korobeynikovc5c905e2010-02-09 16:50:54 +000075 <td><a href="http://qt.nokia.com">Qt</a></td>
Anton Korobeynikov55496d72010-02-09 16:46:25 +000076 <td>Partially compiles; miscompilation of uic prevents complete compilation, qmake works, some small examples also.</td>
Douglas Gregorfa186e92010-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 Gregorbb26a922010-02-05 23:51:14 +000080</table>
81
Chris Lattner6fe37482010-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 Lattnerda9e3282010-05-21 21:02:17 +000086features.</p>
Chris Lattner6fe37482010-05-21 20:59:40 +000087
88
89<h2 id="specification">Implementation Status by Feature</h2>
Cedric Venet084381332009-02-14 20:20:19 +000090
91
92<!-- Within this table: The colors we're using to color-code our level
93of support for a given section:
94
95 White (no background): not considered/tested.
96 #C11B17: Broken.
97 #F88017: Some useful examples work
98 #FDD017: Many examples work
99 #347C17: Nearly everything works
100 #00FF00 + check mark: Implementation complete!
101 -->
102
103<p>The following table is used to help track our implementation
Chris Lattner6fe37482010-05-21 20:59:40 +0000104 progress toward implementing the complete C++'0x standard. We use a
Cedric Venet084381332009-02-14 20:20:19 +0000105 simple, somewhat arbitrary color-coding scheme to describe the
Chris Lattner6fe37482010-05-21 20:59:40 +0000106 relative completeness of features:</p>
Cedric Venet084381332009-02-14 20:20:19 +0000107
108<table width="689" border="1" cellspacing="0">
109 <tr>
110 <th>Not started/not evaluated</th>
111 <th>Not Applicable</th>
112 <th>Broken</th>
113 <th>Some examples work</th>
114 <th>Many examples work</th>
115 <th>Nearly everything works</th>
Douglas Gregor5a4d12a2009-05-12 17:55:28 +0000116 <th>Complete</th>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000117<!--
Douglas Gregor5a4d12a2009-05-12 17:55:28 +0000118 <th>Complete (with tests for each paragraph)</th>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000119-->
Cedric Venet084381332009-02-14 20:20:19 +0000120 </tr>
121 <tr>
122 <td></td>
123 <td class="na">N/A</td>
124 <td class="broken"></td>
125 <td class="basic"></td>
126 <td class="medium"></td>
127 <td class="advanced"></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000128 <td class="complete">rXXXXXX</td>
129<!--
Cedric Venet084381332009-02-14 20:20:19 +0000130 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000131-->
Cedric Venet084381332009-02-14 20:20:19 +0000132 </tr>
133</table>
134
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000135<p>In addition, boxes marked with &#x2713 have complete and passing tests.
136 Similarly, boxes marked with &#x2717 have complete tests, some of which
137 are failing, and a <b>?</b> indicates partial tests while not making any
138 statement about passing status.</p>
139
Cedric Venet084381332009-02-14 20:20:19 +0000140<p>A feature is "complete" when the appropriate Clang component (Parse, AST,
141Sema, CodeGen) implements the behavior described in all of the
Chris Lattner6fe37482010-05-21 20:59:40 +0000142paragraphs in the relevant C++'0x draft standard. The major
143components are:</p>
Cedric Venet084381332009-02-14 20:20:19 +0000144
145<dl>
146 <dt>Parse</dt>
Chris Lattner6fe37482010-05-21 20:59:40 +0000147 <dd>Clang is able to parse the grammar of this feature (or the grammar
148 described by this section), but does not necessarily do anything with the
149 parsed result. Use Clang's <code>-fsyntax-only</code> option to parse C++
150 programs.</dd>
Cedric Venet084381332009-02-14 20:20:19 +0000151
152 <dt>AST</dt>
Chris Lattner6fe37482010-05-21 20:59:40 +0000153 <dd>Clang builds an abstract syntax tree (AST) for the feature, but does not
154 necessarily perform any type-checking. Use Clang's <code>-ast-print</code>
155 option to print the resulting ASTs.</dd>
Cedric Venet084381332009-02-14 20:20:19 +0000156
157 <dt>Sema</dt>
Chris Lattner6fe37482010-05-21 20:59:40 +0000158 <dd>Clang parses and type-checks this feature and provides a well-formed AST
159 annotated with types. Use Clang's <code>-fsyntax-only</code> to type-check
160 code.</dd>
Cedric Venet084381332009-02-14 20:20:19 +0000161
162 <dt>CodeGen</dt>
Chris Lattner6fe37482010-05-21 20:59:40 +0000163 <dd>Clang parses, type-checks, and generates code for this feature, allowing
164 one to compile and execute programs.</dd>
Cedric Venet084381332009-02-14 20:20:19 +0000165</dl>
166
Chris Lattner6fe37482010-05-21 20:59:40 +0000167<p>Updates to this table are welcome! Tests for the various features are also
Cedric Venet084381332009-02-14 20:20:19 +0000168welcome!</p>
169
170<table width="689" border="1" cellspacing="0">
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000171<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/2010/n3225.pdf">here</a>) </td>
Chris Lattner6fe37482010-05-21 20:59:40 +0000172</tr>
Cedric Venet084381332009-02-14 20:20:19 +0000173 <tr>
Chris Lattner6fe37482010-05-21 20:59:40 +0000174 <th>Feature</th>
Cedric Venet084381332009-02-14 20:20:19 +0000175 <th>Parse</th>
176 <th>AST</th>
177 <th>Sema</th>
178 <th>CodeGen</th>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000179 <th>Standard Sections</th>
Cedric Venet084381332009-02-14 20:20:19 +0000180 <th>Notes</th>
181 </tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000182<tr><td colspan="7" class="category">Control Flow Modifications</td></tr>
183<tr>
184 <td>Range-based for loop</td>
185 <td></td>
186 <td></td>
187 <td></td>
188 <td></td>
189 <td>6.5.4</td>
190 <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2243.html">N2243</a></td>
191</tr>
Douglas Gregor1bbffbc2009-05-07 17:50:16 +0000192
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000193<tr><td colspan="7" class="category">Type System Modifications</td></tr>
Sebastian Redl576fd422009-05-10 18:38:11 +0000194<tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000195 <td>rvalue references</td>
Douglas Gregor5a4d12a2009-05-12 17:55:28 +0000196 <td class="complete" align="center"></td>
197 <td class="complete" align="center"></td>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000198 <td class="broken" align="center"></td>
Sebastian Redld1309a32009-04-12 17:41:24 +0000199 <td class="broken"></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000200 <td>8.3.2</td>
201 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html">N2118</a>,
202 <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2831.html">N2831</a>
203 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2027.html">N2027</a>
204 </td>
Sebastian Redl576fd422009-05-10 18:38:11 +0000205</tr>
206<tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000207 <td>decltype</td>
Anders Carlssonb7fe2d672009-06-24 22:10:19 +0000208 <td class="complete" align="center">&#x2713;</td>
209 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000210 <td class="advanced" align="center"></td>
211 <td class="na">N/A</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000212 <td>7.1.6.2</td>
213 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf">N2343</a>
214 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1478.pdf">N1478</a>
215 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1978.pdf">N1978</a>
216 </td>
217</tr>
218<tr>
219 <td>auto type deduction</td>
220 <td></td>
221 <td></td>
222 <td></td>
223 <td></td>
224 <td>7.1.6.2, 7.1.6.4</td>
225 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf">N1984</a></td>
226</tr>
227<tr>
228 <td>nullptr</td>
229 <td class="complete" align="center"></td>
230 <td class="complete" align="center"></td>
231 <td class="medium" align="center"></td>
232 <td class="broken"></td>
233 <td>2.14.7, 4.10, 4.11</td>
234 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">N2431</a>
235 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1488.pdf">N1488</a>
236 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2214.pdf">N2214</a>
237 </td>
238</tr>
239<tr>
240 <td>enum classes</td>
241 <td class="complete"></td>
242 <td class="advanced"></td>
243 <td class="advanced"></td>
244 <td></td>
245 <td>7.2</td>
246 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1513.pdf">N1513</a>
247 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf">N2347</a>
248 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2499.pdf">N2499</a>
249 Includes forward declaration capability
250 </td>
251</tr>
252<tr>
253 <td>long long</td>
254 <td class="complete"></td>
255 <td class="complete"></td>
256 <td class="complete"></td>
257 <td class="complete"></td>
258 <td>3.9.1</td>
259 <td>C99
260 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf">N1811</a>
261 </td>
262</tr>
263<tr>
264 <td>constexpr</td>
265 <td></td>
266 <td></td>
267 <td></td>
268 <td></td>
269 <td>3.6.2, 3.9, 5.19, 7.1.5</td>
270 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1521.pdf">N1521</a>
271 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">N2235</a>
272 </td>
273</tr>
274<tr>
275 <td>char16_t/char32_t</td>
276 <td class="medium"></td>
277 <td class="medium"></td>
278 <td class="medium"></td>
279 <td class="medium"></td>
280 <td></td>
281 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html">N2249</a></td>
282</tr>
283<tr>
284 <td>Unicode string literal types</td>
285 <td></td>
286 <td></td>
287 <td></td>
288 <td></td>
289 <td>2.14.3, 2.14.5</td>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000290 <td></td>
291</tr>
292<tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000293 <td>Raw string literal types</td>
294 <td></td>
295 <td></td>
296 <td></td>
297 <td></td>
298 <td>2.14.5</td>
299 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2053.html">N2053</a>
300 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.html">N2442</a>
301 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf">N2378</a>
302 </td>
303</tr>
304<tr>
305 <td>user-defined literal types</td>
306 <td></td>
307 <td></td>
308 <td></td>
309 <td></td>
310 <td>2.14.8</td>
311 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf">N2378</a></td>
312</tr>
313<tr>
314 <td>POD defintion changes</td>
315 <td></td>
316 <td></td>
317 <td></td>
318 <td></td>
319 <td>3.9, 9</td>
320 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2294.html">N2294</a></td>
321</tr>
322<tr>
323 <td>Unrestricted unions</td>
324 <td></td>
325 <td></td>
326 <td></td>
327 <td></td>
328 <td>9.5</td>
329 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf">N2544</a></td>
330</tr>
331<tr>
332 <td>Tighter narrowing rules</td>
333 <td></td>
334 <td></td>
335 <td></td>
336 <td></td>
337 <td>8.5.4</td>
338 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf">N1890</a>
339 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf">N2215</a>
340 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf">N2640</a>
341 </td>
342</tr>
343<tr><td colspan="7" class="category">Class Modifications</td></tr>
344<tr>
345 <td>delegating constructors</td>
346 <td></td>
347 <td></td>
348 <td></td>
349 <td></td>
350 <td>12.6.2</td>
351 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986">N1986</a></td>
352</tr>
353<tr>
354 <td>inheriting constructors</td>
355 <td></td>
356 <td></td>
357 <td></td>
358 <td></td>
359 <td>12.9</td>
360 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf">N1890</a>
361 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1898.pdf">N1898</a>
362 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2512.html">N2512</a>
363 </td>
364</tr>
365<tr>
366 <td>In-declaration member initialization</td>
367 <td></td>
368 <td></td>
369 <td></td>
370 <td></td>
371 <td></td>
372 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2628.html">N2628</a></td>
373</tr>
374<tr>
375 <td>Changes to implicitly generated methods</td>
376 <td></td>
377 <td></td>
378 <td></td>
379 <td></td>
380 <td></td>
381 <td>Includes implicit generation of move operations</td>
382</tr>
383<tr>
384 <td>defaulted methods</td>
385 <td></td>
386 <td></td>
387 <td></td>
388 <td></td>
389 <td></td>
390 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1717.pdf">N1717</a>
391 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html">N2326</a>
392 </td>
393</tr>
394<tr>
395 <td>destructor defaults to noexcept</td>
396 <td></td>
397 <td></td>
398 <td></td>
399 <td></td>
400 <td></td>
401 <td></td>
402</tr>
403<tr>
404 <td>sizeof on members without object instance</td>
405 <td></td>
406 <td></td>
407 <td></td>
408 <td></td>
409 <td></td>
410 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2150.html">N2150</a></td>
411</tr>
412<tr>
413 <td>virtual function safety modifications</td>
414 <td></td>
415 <td></td>
416 <td></td>
417 <td></td>
418 <td></td>
419 <td></td>
420</tr>
421<tr>
422 <td>Explicit conversion operators</td>
423 <td class="complete" align="center"></td>
424 <td class="basic" align="center"></td>
425 <td class="basic" align="center"></td>
426 <td class="broken"></td>
427 <td>12.3</td>
428 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf">N2437</a>
429 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2333.html">N2333</a>
430 No name mangling; ASTs don't contain calls to conversion operators</td>
431</tr>
432<tr><td colspan="7" class="category">Template Modifications</td></tr>
433<tr>
434 <td>Right angle brackets</td>
435 <td class="complete" align="center"></td>
436 <td class="na" align="center">N/A</td>
437 <td class="na" align="center">N/A</td>
438 <td class="na">N/A</td>
439 <td></td>
440 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html">N1757</a></td>
441</tr>
442<tr>
443 <td>variadic templates</td>
444 <td></td>
445 <td></td>
446 <td></td>
447 <td></td>
448 <td>14.6.3</td>
449 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2151.pdf">N2151</a>
450 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2080.pdf">N2080</a>
451 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2087.pdf">N2087</a>
452 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2772.pdf">N2772</a>
453 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2551.pdf">N2551</a>
454 </td>
455</tr>
456<tr>
457 <td>template aliases</td>
458 <td></td>
459 <td></td>
460 <td></td>
461 <td></td>
462 <td>7.1.3, 14.6.7</td>
463 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1489.pdf">N1489</a>
464 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf">N2258</a>
465 Includes non-template type aliasing
466 </td>
467</tr>
468<tr>
469 <td>Removal of export</td>
470 <td class="complete"></td>
471 <td class="na">N/A</td>
472 <td class="na">N/A</td>
473 <td class="na">N/A</td>
474 <td></td>
475 <td>This was never implemented in C++03</td>
476</tr>
477<tr>
478 <td>extern templates</td>
479 <td></td>
480 <td></td>
481 <td></td>
482 <td></td>
483 <td>14.8.2</td>
484 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1448.pdf">N1448</a></td>
485</tr>
486<tr>
487 <td>Local classes as template parameters</td>
488 <td></td>
489 <td></td>
490 <td></td>
491 <td></td>
492 <td></td>
493 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2402.pdf">N2402</a>
494 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm">N2657</a>
495 </td>
496</tr>
497<tr><td colspan="7" class="category">Exception Modifications</td></tr>
498<tr>
499 <td>Deprecation of exception specifications</td>
500 <td></td>
501 <td></td>
502 <td></td>
503 <td></td>
504 <td>15.4</td>
505 <td></td>
506</tr>
507<tr>
508 <td>noexcept</td>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000509 <td class="complete" align="center">&#x2713;</td>
510 <td class="complete" align="center">&#x2713;</td>
Anders Carlssonb7fe2d672009-06-24 22:10:19 +0000511 <td class="complete" align="center">&#x2713;</td>
512 <td class="na">N/A</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000513 <td>5.3.7, 15.4</td>
514 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html">N3050</a></td>
515</tr>
516<tr><td colspan="7" class="category">Preprocessor Modifications</td></tr>
517<tr>
518 <td>__STDC_HOSTED__</td>
519 <td></td>
520 <td class="na">N/A</td>
521 <td class="na">N/A</td>
522 <td class="na">N/A</td>
523 <td>16.8</td>
524 <td>C99
525 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
526 </td>
527</tr>
528<tr>
529 <td>_Pragma</td>
530 <td class="complete"></td>
531 <td class="na">N/A</td>
532 <td class="na">N/A</td>
533 <td class="na">N/A</td>
534 <td>16.9</td>
535 <td>C99
536 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
537 </td>
538</tr>
539<tr>
540 <td>Variable argument macros</td>
541 <td class="complete"></td>
542 <td class="na">N/A</td>
543 <td class="na">N/A</td>
544 <td class="na">N/A</td>
545 <td>16.3</td>
546 <td>C99
547 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
548 </td>
549</tr>
550<tr>
551 <td>Empty macro arguments</td>
552 <td class="complete"></td>
553 <td class="na">N/A</td>
554 <td class="na">N/A</td>
555 <td class="na">N/A</td>
556 <td>16.3</td>
557 <td>C99
558 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
559 </td>
560</tr>
561<tr>
562 <td>__func__</td>
563 <td class="complete"></td>
564 <td class="na">N/A</td>
565 <td class="na">N/A</td>
566 <td class="na">N/A</td>
567 <td>8.4.1</td>
568 <td>C99
569 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
570 </td>
571</tr>
572<tr>
573 <td>__cplusplus</td>
574 <td class="complete"></td>
575 <td class="na">N/A</td>
576 <td class="na">N/A</td>
577 <td class="na">N/A</td>
578 <td>16.8</td>
579 <td></td>
580</tr>
581<tr><td colspan="7" class="category">Things Completely New</td></tr>
582<tr>
Douglas Gregorcf082ad2010-12-21 05:54:22 +0000583 <td>Late-specified return type</td>
584 <td></td>
585 <td></td>
586 <td></td>
587 <td></td>
588 <td>8.3.5</td>
589 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2445.html">N2445</a></td>
590</tr>
591<tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000592 <td>lambda expressions</td>
593 <td></td>
594 <td></td>
595 <td></td>
596 <td></td>
597 <td>5.1.2</td>
598 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1968.htm">N1968</a>
599 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf">N2550</a>
600 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2859.pdf">N2859</a>
601 </td>
602</tr>
603<tr>
604 <td>Uniform initializers </td>
605 <td></td>
606 <td></td>
607 <td></td>
608 <td></td>
609 <td>12.6</td>
610 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf">N2215</a>
611 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf">N2640</a>
612 </td>
613</tr>
614<tr>
615 <td>Memory model</td>
616 <td></td>
617 <td></td>
618 <td></td>
619 <td></td>
620 <td>1.7</td>
621 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2556.html">N2556</a></td>
622</tr>
623<tr><td colspan="7" class="category">Miscellania</td></tr>
624<tr>
625 <td>Standard attribute syntax</td>
626 <td></td>
627 <td></td>
628 <td></td>
629 <td></td>
630 <td></td>
631 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2418.pdf">N2418</a></td>
632</tr>
633<tr>
634 <td>alignment control</td>
635 <td></td>
636 <td></td>
637 <td></td>
638 <td></td>
639 <td></td>
Anders Carlssonb7fe2d672009-06-24 22:10:19 +0000640 <td></td>
641</tr>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000642<tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000643 <td>Deleted functions</td>
644 <td class="complete" align="center"></td>
645 <td class="complete" align="center"></td>
646 <td class="medium" align="center"></td>
647 <td class="na">N/A</td>
648 <td>8.4.3</td>
649 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.htm">N2326</a></br>
650 This also includes class methods.</td>
651</tr>
652<tr>
653 <td>static_assert</td>
654 <td class="complete" align="center"></td>
655 <td class="complete" align="center"></td>
656 <td class="advanced" align="center"></td>
657 <td class="na">N/A</td>
658 <td>7</td>
659 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1381.htm">N1381</a>
660 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.pdf">N1720</a>
661 </td>
662</tr>
663<tr>
664 <td>Inline namespaces</td>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000665 <td class="complete" align="center">&#x2713;</td>
666 <td class="complete" align="center">&#x2713;</td>
667 <td class="complete" align="center">&#x2713;</td>
668 <td class="complete" align="center">N/A</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000669 <td>7.3.1</td>
670 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm">N2535</a></td>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000671</tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000672<tr>
673 <td>thread_local storage</td>
674 <td></td>
675 <td></td>
676 <td></td>
677 <td></td>
678 <td>3.7.2, 7.1.1</td>
679 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm">N2660</a></td>
680</tr>
681<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 Venet084381332009-02-14 20:20:19 +0000682</table>
Douglas Gregor9e0d21a2009-05-12 18:36:58 +0000683<br />
Cedric Venet084381332009-02-14 20:20:19 +0000684</div>
685</body>
686</html>