blob: eaf951cd723307fc326c639ecbeac867cfe63863 [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
88
89<h2 id="specification">Implementation Status by Feature</h2>
Cedric Venet3d658642009-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 Lattner900e32d2010-05-21 20:59:40 +0000104 progress toward implementing the complete C++'0x standard. We use a
Cedric Venet3d658642009-02-14 20:20:19 +0000105 simple, somewhat arbitrary color-coding scheme to describe the
Chris Lattner900e32d2010-05-21 20:59:40 +0000106 relative completeness of features:</p>
Cedric Venet3d658642009-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 Gregor07554022009-05-12 17:55:28 +0000116 <th>Complete</th>
Douglas Gregor08765a92010-12-21 05:43:31 +0000117<!--
Douglas Gregor07554022009-05-12 17:55:28 +0000118 <th>Complete (with tests for each paragraph)</th>
Douglas Gregor08765a92010-12-21 05:43:31 +0000119-->
Cedric Venet3d658642009-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 Gregor08765a92010-12-21 05:43:31 +0000128 <td class="complete">rXXXXXX</td>
129<!--
Cedric Venet3d658642009-02-14 20:20:19 +0000130 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000131-->
Cedric Venet3d658642009-02-14 20:20:19 +0000132 </tr>
133</table>
134
Douglas Gregor08765a92010-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 Venet3d658642009-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 Lattner900e32d2010-05-21 20:59:40 +0000142paragraphs in the relevant C++'0x draft standard. The major
143components are:</p>
Cedric Venet3d658642009-02-14 20:20:19 +0000144
145<dl>
146 <dt>Parse</dt>
Chris Lattner900e32d2010-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 Venet3d658642009-02-14 20:20:19 +0000151
152 <dt>AST</dt>
Chris Lattner900e32d2010-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 Venet3d658642009-02-14 20:20:19 +0000156
157 <dt>Sema</dt>
Chris Lattner900e32d2010-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 Venet3d658642009-02-14 20:20:19 +0000161
162 <dt>CodeGen</dt>
Chris Lattner900e32d2010-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 Venet3d658642009-02-14 20:20:19 +0000165</dl>
166
Chris Lattner900e32d2010-05-21 20:59:40 +0000167<p>Updates to this table are welcome! Tests for the various features are also
Cedric Venet3d658642009-02-14 20:20:19 +0000168welcome!</p>
169
170<table width="689" border="1" cellspacing="0">
Douglas Gregor08765a92010-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 Lattner900e32d2010-05-21 20:59:40 +0000172</tr>
Cedric Venet3d658642009-02-14 20:20:19 +0000173 <tr>
Chris Lattner900e32d2010-05-21 20:59:40 +0000174 <th>Feature</th>
Cedric Venet3d658642009-02-14 20:20:19 +0000175 <th>Parse</th>
176 <th>AST</th>
177 <th>Sema</th>
178 <th>CodeGen</th>
Douglas Gregor08765a92010-12-21 05:43:31 +0000179 <th>Standard Sections</th>
Cedric Venet3d658642009-02-14 20:20:19 +0000180 <th>Notes</th>
181 </tr>
Douglas Gregor08765a92010-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 Gregor6d507a62009-05-07 17:50:16 +0000192
Douglas Gregor08765a92010-12-21 05:43:31 +0000193<tr><td colspan="7" class="category">Type System Modifications</td></tr>
Sebastian Redl6e8ed162009-05-10 18:38:11 +0000194<tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000195 <td>rvalue references</td>
Douglas Gregor07554022009-05-12 17:55:28 +0000196 <td class="complete" align="center"></td>
197 <td class="complete" align="center"></td>
Douglas Gregor28f03962010-09-17 21:37:49 +0000198 <td class="broken" align="center"></td>
Sebastian Redl0b5e7fb2009-04-12 17:41:24 +0000199 <td class="broken"></td>
Douglas Gregor08765a92010-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 Redl6e8ed162009-05-10 18:38:11 +0000205</tr>
206<tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000207 <td>decltype</td>
Anders Carlsson3eb43a02009-06-24 22:10:19 +0000208 <td class="complete" align="center">&#x2713;</td>
209 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor28f03962010-09-17 21:37:49 +0000210 <td class="advanced" align="center"></td>
211 <td class="na">N/A</td>
Douglas Gregor08765a92010-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 Gregor28f03962010-09-17 21:37:49 +0000290 <td></td>
291</tr>
292<tr>
Douglas Gregor08765a92010-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 Gregor28f03962010-09-17 21:37:49 +0000509 <td class="complete" align="center">&#x2713;</td>
510 <td class="complete" align="center">&#x2713;</td>
Anders Carlsson3eb43a02009-06-24 22:10:19 +0000511 <td class="complete" align="center">&#x2713;</td>
512 <td class="na">N/A</td>
Douglas Gregor08765a92010-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 Gregor1ce79652010-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 Gregor08765a92010-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 Carlsson3eb43a02009-06-24 22:10:19 +0000640 <td></td>
641</tr>
Douglas Gregor28f03962010-09-17 21:37:49 +0000642<tr>
Douglas Gregor08765a92010-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 Gregor28f03962010-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 Gregor08765a92010-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 Gregor28f03962010-09-17 21:37:49 +0000671</tr>
Douglas Gregor08765a92010-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 Venet3d658642009-02-14 20:20:19 +0000682</table>
Douglas Gregor01cf1122009-05-12 18:36:58 +0000683<br />
Cedric Venet3d658642009-02-14 20:20:19 +0000684</div>
685</body>
686</html>