blob: d7d2465ad5b0f53c4d5f6d4e6584b24ca7645b82 [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 Gregor17aa45d2011-07-21 17:46:15 +000030<p>Clang currently implements all of the ISO C++ 1998 standard
31 (including the defects addressed in the ISO C++ 2003 standard)
32 except for 'export' (which has been removed from the C++'0x draft)
33 and is considered a production-quality C++ compiler. The <a
34 href="http://llvm.org/bugs/">LLVM bug tracker</a> contains a Clang
35 C++ component that tracks known Clang C++ bugs.</p>
Douglas Gregorbb26a922010-02-05 23:51:14 +000036
Chris Lattner6fe37482010-05-21 20:59:40 +000037<h2 id="cxx0x">C++0x Implementation status</h2>
38
Douglas Gregor17aa45d2011-07-21 17:46:15 +000039 <p>Clang provides support for a number of features included in the upcoming ISO C++ Standard, C++0x. This section tracks the status of various C++0x
40features, and a number of other C++0x features are under active development.</p>
Chris Lattner6fe37482010-05-21 20:59:40 +000041
Douglas Gregor17aa45d2011-07-21 17:46:15 +000042<p>You can use Clang in C++0x mode either
Jeffrey Yasskincb407572011-03-29 22:27:50 +000043with <a href="http://libcxx.llvm.org/">libc++</a> or with gcc's libstdc++.
44libstdc++-4.4 requires <a href="libstdc++4.4-clang0x.patch">a patch</a> to work
45with clang; other versions have not been tested.</p>
46
Chris Lattner6fe37482010-05-21 20:59:40 +000047
Cedric Venet084381332009-02-14 20:20:19 +000048<!-- Within this table: The colors we're using to color-code our level
49of support for a given section:
50
51 White (no background): not considered/tested.
52 #C11B17: Broken.
53 #F88017: Some useful examples work
54 #FDD017: Many examples work
55 #347C17: Nearly everything works
56 #00FF00 + check mark: Implementation complete!
57 -->
58
59<p>The following table is used to help track our implementation
Chris Lattner6fe37482010-05-21 20:59:40 +000060 progress toward implementing the complete C++'0x standard. We use a
Cedric Venet084381332009-02-14 20:20:19 +000061 simple, somewhat arbitrary color-coding scheme to describe the
Chris Lattner6fe37482010-05-21 20:59:40 +000062 relative completeness of features:</p>
Cedric Venet084381332009-02-14 20:20:19 +000063
64<table width="689" border="1" cellspacing="0">
65 <tr>
66 <th>Not started/not evaluated</th>
67 <th>Not Applicable</th>
68 <th>Broken</th>
69 <th>Some examples work</th>
70 <th>Many examples work</th>
71 <th>Nearly everything works</th>
Douglas Gregor5a4d12a2009-05-12 17:55:28 +000072 <th>Complete</th>
Douglas Gregor6b6e0822010-12-21 05:43:31 +000073<!--
Douglas Gregor5a4d12a2009-05-12 17:55:28 +000074 <th>Complete (with tests for each paragraph)</th>
Douglas Gregor6b6e0822010-12-21 05:43:31 +000075-->
Cedric Venet084381332009-02-14 20:20:19 +000076 </tr>
77 <tr>
78 <td></td>
79 <td class="na">N/A</td>
80 <td class="broken"></td>
81 <td class="basic"></td>
82 <td class="medium"></td>
83 <td class="advanced"></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +000084 <td class="complete">rXXXXXX</td>
85<!--
Cedric Venet084381332009-02-14 20:20:19 +000086 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +000087-->
Cedric Venet084381332009-02-14 20:20:19 +000088 </tr>
89</table>
90
Douglas Gregor6b6e0822010-12-21 05:43:31 +000091<p>In addition, boxes marked with &#x2713 have complete and passing tests.
92 Similarly, boxes marked with &#x2717 have complete tests, some of which
93 are failing, and a <b>?</b> indicates partial tests while not making any
94 statement about passing status.</p>
95
Cedric Venet084381332009-02-14 20:20:19 +000096<p>A feature is "complete" when the appropriate Clang component (Parse, AST,
97Sema, CodeGen) implements the behavior described in all of the
Chris Lattner6fe37482010-05-21 20:59:40 +000098paragraphs in the relevant C++'0x draft standard. The major
99components are:</p>
Cedric Venet084381332009-02-14 20:20:19 +0000100
101<dl>
102 <dt>Parse</dt>
Chris Lattner6fe37482010-05-21 20:59:40 +0000103 <dd>Clang is able to parse the grammar of this feature (or the grammar
104 described by this section), but does not necessarily do anything with the
105 parsed result. Use Clang's <code>-fsyntax-only</code> option to parse C++
106 programs.</dd>
Cedric Venet084381332009-02-14 20:20:19 +0000107
108 <dt>AST</dt>
Chris Lattner6fe37482010-05-21 20:59:40 +0000109 <dd>Clang builds an abstract syntax tree (AST) for the feature, but does not
110 necessarily perform any type-checking. Use Clang's <code>-ast-print</code>
111 option to print the resulting ASTs.</dd>
Cedric Venet084381332009-02-14 20:20:19 +0000112
113 <dt>Sema</dt>
Chris Lattner6fe37482010-05-21 20:59:40 +0000114 <dd>Clang parses and type-checks this feature and provides a well-formed AST
115 annotated with types. Use Clang's <code>-fsyntax-only</code> to type-check
116 code.</dd>
Cedric Venet084381332009-02-14 20:20:19 +0000117
118 <dt>CodeGen</dt>
Chris Lattner6fe37482010-05-21 20:59:40 +0000119 <dd>Clang parses, type-checks, and generates code for this feature, allowing
120 one to compile and execute programs.</dd>
Cedric Venet084381332009-02-14 20:20:19 +0000121</dl>
122
Chris Lattner6fe37482010-05-21 20:59:40 +0000123<p>Updates to this table are welcome! Tests for the various features are also
Cedric Venet084381332009-02-14 20:20:19 +0000124welcome!</p>
125
126<table width="689" border="1" cellspacing="0">
Richard Smith6c424332011-04-15 14:38:27 +0000127<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 Lattner6fe37482010-05-21 20:59:40 +0000128</tr>
Cedric Venet084381332009-02-14 20:20:19 +0000129 <tr>
Chris Lattner6fe37482010-05-21 20:59:40 +0000130 <th>Feature</th>
Cedric Venet084381332009-02-14 20:20:19 +0000131 <th>Parse</th>
132 <th>AST</th>
133 <th>Sema</th>
134 <th>CodeGen</th>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000135 <th>Standard Sections</th>
Cedric Venet084381332009-02-14 20:20:19 +0000136 <th>Notes</th>
137 </tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000138<tr><td colspan="7" class="category">Control Flow Modifications</td></tr>
139<tr>
140 <td>Range-based for loop</td>
Richard Smith6c424332011-04-15 14:38:27 +0000141 <td class="complete" align="center">&#x2713;</td>
142 <td class="complete" align="center">&#x2713;</td>
143 <td class="complete" align="center">&#x2713;</td>
144 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000145 <td>6.5.4</td>
Richard Smith6c424332011-04-15 14:38:27 +0000146 <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2243.html">N2243</a>
147 <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3271.htm">N3271</a></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000148</tr>
Douglas Gregor1bbffbc2009-05-07 17:50:16 +0000149
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000150<tr><td colspan="7" class="category">Type System Modifications</td></tr>
Sebastian Redl576fd422009-05-10 18:38:11 +0000151<tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000152 <td>rvalue references</td>
Douglas Gregor5a4d12a2009-05-12 17:55:28 +0000153 <td class="complete" align="center"></td>
154 <td class="complete" align="center"></td>
Douglas Gregor96367532011-01-26 21:35:14 +0000155 <td class="complete" align="center"></td>
156 <td class="complete"></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000157 <td>8.3.2</td>
158 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html">N2118</a>,
Douglas Gregor96367532011-01-26 21:35:14 +0000159 <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 Gregor6b6e0822010-12-21 05:43:31 +0000160 </td>
Sebastian Redl576fd422009-05-10 18:38:11 +0000161</tr>
162<tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000163 <td>decltype</td>
Anders Carlssonb7fe2d672009-06-24 22:10:19 +0000164 <td class="complete" align="center">&#x2713;</td>
165 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000166 <td class="advanced" align="center"></td>
Richard Smithe3a5ff12011-05-05 22:07:51 +0000167 <td class="advanced" align="center"></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000168 <td>7.1.6.2</td>
169 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf">N2343</a>
170 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1478.pdf">N1478</a>
171 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1978.pdf">N1978</a>
172 </td>
173</tr>
174<tr>
175 <td>auto type deduction</td>
Richard Smith13f68cf2011-04-03 14:12:46 +0000176 <td class="complete" align="center">&#x2713;</td>
177 <td class="complete" align="center">&#x2713;</td>
178 <td class="complete" align="center">&#x2713;</td>
179 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000180 <td>7.1.6.2, 7.1.6.4</td>
181 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf">N1984</a></td>
182</tr>
183<tr>
184 <td>nullptr</td>
185 <td class="complete" align="center"></td>
186 <td class="complete" align="center"></td>
Douglas Gregor80d63222011-07-21 17:41:00 +0000187 <td class="advanced" align="center"></td>
188 <td class="advanced"></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000189 <td>2.14.7, 4.10, 4.11</td>
190 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">N2431</a>
191 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1488.pdf">N1488</a>
192 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2214.pdf">N2214</a>
193 </td>
194</tr>
195<tr>
196 <td>enum classes</td>
197 <td class="complete"></td>
198 <td class="advanced"></td>
199 <td class="advanced"></td>
200 <td></td>
201 <td>7.2</td>
202 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1513.pdf">N1513</a>
203 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf">N2347</a>
204 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2499.pdf">N2499</a>
205 Includes forward declaration capability
206 </td>
207</tr>
208<tr>
209 <td>long long</td>
210 <td class="complete"></td>
211 <td class="complete"></td>
212 <td class="complete"></td>
213 <td class="complete"></td>
214 <td>3.9.1</td>
215 <td>C99
216 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf">N1811</a>
217 </td>
218</tr>
219<tr>
220 <td>constexpr</td>
221 <td></td>
222 <td></td>
223 <td></td>
224 <td></td>
225 <td>3.6.2, 3.9, 5.19, 7.1.5</td>
226 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1521.pdf">N1521</a>
227 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">N2235</a>
228 </td>
229</tr>
230<tr>
231 <td>char16_t/char32_t</td>
232 <td class="medium"></td>
233 <td class="medium"></td>
234 <td class="medium"></td>
235 <td class="medium"></td>
236 <td></td>
237 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html">N2249</a></td>
238</tr>
239<tr>
240 <td>Unicode string literal types</td>
241 <td></td>
242 <td></td>
243 <td></td>
244 <td></td>
245 <td>2.14.3, 2.14.5</td>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000246 <td></td>
247</tr>
248<tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000249 <td>Raw string literal types</td>
250 <td></td>
251 <td></td>
252 <td></td>
253 <td></td>
254 <td>2.14.5</td>
255 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2053.html">N2053</a>
256 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.html">N2442</a>
257 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf">N2378</a>
258 </td>
259</tr>
260<tr>
261 <td>user-defined literal types</td>
262 <td></td>
263 <td></td>
264 <td></td>
265 <td></td>
266 <td>2.14.8</td>
267 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf">N2378</a></td>
268</tr>
269<tr>
Chris Lattner57540c52011-04-15 05:22:18 +0000270 <td>POD definition changes</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000271 <td></td>
272 <td></td>
273 <td></td>
274 <td></td>
275 <td>3.9, 9</td>
276 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2294.html">N2294</a></td>
277</tr>
278<tr>
279 <td>Unrestricted unions</td>
280 <td></td>
281 <td></td>
282 <td></td>
283 <td></td>
284 <td>9.5</td>
285 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf">N2544</a></td>
286</tr>
287<tr>
288 <td>Tighter narrowing rules</td>
289 <td></td>
290 <td></td>
291 <td></td>
292 <td></td>
293 <td>8.5.4</td>
294 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf">N1890</a>
295 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf">N2215</a>
296 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf">N2640</a>
297 </td>
298</tr>
299<tr><td colspan="7" class="category">Class Modifications</td></tr>
300<tr>
301 <td>delegating constructors</td>
Alexis Hunt61bc1732011-05-01 07:04:31 +0000302 <td class="complete"></td>
303 <td class="complete"></td>
304 <td class="complete"></td>
305 <td class="complete"></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000306 <td>12.6.2</td>
307 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986">N1986</a></td>
308</tr>
309<tr>
310 <td>inheriting constructors</td>
311 <td></td>
312 <td></td>
313 <td></td>
314 <td></td>
315 <td>12.9</td>
316 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf">N1890</a>
317 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1898.pdf">N1898</a>
318 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2512.html">N2512</a>
319 </td>
320</tr>
321<tr>
322 <td>In-declaration member initialization</td>
323 <td></td>
324 <td></td>
325 <td></td>
326 <td></td>
327 <td></td>
328 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2628.html">N2628</a></td>
329</tr>
330<tr>
331 <td>Changes to implicitly generated methods</td>
332 <td></td>
333 <td></td>
334 <td></td>
335 <td></td>
336 <td></td>
337 <td>Includes implicit generation of move operations</td>
338</tr>
339<tr>
340 <td>defaulted methods</td>
341 <td></td>
342 <td></td>
343 <td></td>
344 <td></td>
345 <td></td>
346 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1717.pdf">N1717</a>
347 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html">N2326</a>
348 </td>
349</tr>
350<tr>
351 <td>destructor defaults to noexcept</td>
352 <td></td>
353 <td></td>
354 <td></td>
355 <td></td>
356 <td></td>
357 <td></td>
358</tr>
359<tr>
360 <td>sizeof on members without object instance</td>
361 <td></td>
362 <td></td>
363 <td></td>
364 <td></td>
365 <td></td>
366 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2150.html">N2150</a></td>
367</tr>
368<tr>
369 <td>virtual function safety modifications</td>
370 <td></td>
371 <td></td>
372 <td></td>
373 <td></td>
374 <td></td>
375 <td></td>
376</tr>
377<tr>
378 <td>Explicit conversion operators</td>
379 <td class="complete" align="center"></td>
380 <td class="basic" align="center"></td>
381 <td class="basic" align="center"></td>
382 <td class="broken"></td>
383 <td>12.3</td>
384 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf">N2437</a>
385 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2333.html">N2333</a>
386 No name mangling; ASTs don't contain calls to conversion operators</td>
387</tr>
388<tr><td colspan="7" class="category">Template Modifications</td></tr>
389<tr>
390 <td>Right angle brackets</td>
391 <td class="complete" align="center"></td>
392 <td class="na" align="center">N/A</td>
393 <td class="na" align="center">N/A</td>
394 <td class="na">N/A</td>
395 <td></td>
396 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html">N1757</a></td>
397</tr>
398<tr>
399 <td>variadic templates</td>
Douglas Gregoreecc6bc2011-01-19 22:11:50 +0000400 <td class="complete" align="center"></td>
401 <td class="complete" align="center"></td>
402 <td class="complete" align="center"></td>
403 <td class="complete" align="center"></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000404 <td>14.6.3</td>
Douglas Gregoreecc6bc2011-01-19 22:11:50 +0000405 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2080.pdf">N2080</a>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000406 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2087.pdf">N2087</a>
Douglas Gregoreecc6bc2011-01-19 22:11:50 +0000407 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf">N2242</a>
408 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2488.pdf">N2488</a>
Douglas Gregor96367532011-01-26 21:35:14 +0000409 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf">N2555</a>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000410 </td>
411</tr>
412<tr>
413 <td>template aliases</td>
Richard Smith3f1b5d02011-05-05 21:57:07 +0000414 <td class="complete" align="center">&#x2713;</td>
415 <td class="complete" align="center">&#x2713;</td>
416 <td class="complete" align="center">&#x2713;</td>
417 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000418 <td>7.1.3, 14.6.7</td>
419 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1489.pdf">N1489</a>
420 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf">N2258</a>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000421 </td>
422</tr>
423<tr>
424 <td>Removal of export</td>
425 <td class="complete"></td>
426 <td class="na">N/A</td>
427 <td class="na">N/A</td>
428 <td class="na">N/A</td>
429 <td></td>
430 <td>This was never implemented in C++03</td>
431</tr>
432<tr>
433 <td>extern templates</td>
Douglas Gregor96367532011-01-26 21:35:14 +0000434 <td class="complete"></td>
435 <td class="complete"></td>
436 <td class="complete"></td>
437 <td class="complete"></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000438 <td>14.8.2</td>
Douglas Gregor96367532011-01-26 21:35:14 +0000439 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm">N1987</a></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000440</tr>
441<tr>
442 <td>Local classes as template parameters</td>
443 <td></td>
444 <td></td>
445 <td></td>
446 <td></td>
447 <td></td>
448 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2402.pdf">N2402</a>
449 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm">N2657</a>
450 </td>
451</tr>
452<tr><td colspan="7" class="category">Exception Modifications</td></tr>
453<tr>
454 <td>Deprecation of exception specifications</td>
455 <td></td>
456 <td></td>
457 <td></td>
458 <td></td>
459 <td>15.4</td>
460 <td></td>
461</tr>
462<tr>
463 <td>noexcept</td>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000464 <td class="complete" align="center">&#x2713;</td>
465 <td class="complete" align="center">&#x2713;</td>
Anders Carlssonb7fe2d672009-06-24 22:10:19 +0000466 <td class="complete" align="center">&#x2713;</td>
467 <td class="na">N/A</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000468 <td>5.3.7, 15.4</td>
469 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html">N3050</a></td>
470</tr>
471<tr><td colspan="7" class="category">Preprocessor Modifications</td></tr>
472<tr>
473 <td>__STDC_HOSTED__</td>
Douglas Gregor0a1650f2011-03-27 09:49:38 +0000474 <td class="complete"></td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000475 <td class="na">N/A</td>
476 <td class="na">N/A</td>
477 <td class="na">N/A</td>
478 <td>16.8</td>
479 <td>C99
480 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
481 </td>
482</tr>
483<tr>
484 <td>_Pragma</td>
485 <td class="complete"></td>
486 <td class="na">N/A</td>
487 <td class="na">N/A</td>
488 <td class="na">N/A</td>
489 <td>16.9</td>
490 <td>C99
491 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
492 </td>
493</tr>
494<tr>
495 <td>Variable argument macros</td>
496 <td class="complete"></td>
497 <td class="na">N/A</td>
498 <td class="na">N/A</td>
499 <td class="na">N/A</td>
500 <td>16.3</td>
501 <td>C99
502 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
503 </td>
504</tr>
505<tr>
506 <td>Empty macro arguments</td>
507 <td class="complete"></td>
508 <td class="na">N/A</td>
509 <td class="na">N/A</td>
510 <td class="na">N/A</td>
511 <td>16.3</td>
512 <td>C99
513 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
514 </td>
515</tr>
516<tr>
517 <td>__func__</td>
518 <td class="complete"></td>
519 <td class="na">N/A</td>
520 <td class="na">N/A</td>
521 <td class="na">N/A</td>
522 <td>8.4.1</td>
523 <td>C99
524 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
525 </td>
526</tr>
527<tr>
528 <td>__cplusplus</td>
529 <td class="complete"></td>
530 <td class="na">N/A</td>
531 <td class="na">N/A</td>
532 <td class="na">N/A</td>
533 <td>16.8</td>
534 <td></td>
535</tr>
536<tr><td colspan="7" class="category">Things Completely New</td></tr>
537<tr>
Douglas Gregorcf082ad2010-12-21 05:54:22 +0000538 <td>Late-specified return type</td>
Richard Smith13f68cf2011-04-03 14:12:46 +0000539 <td class="complete" align="center">&#x2713;</td>
540 <td class="complete" align="center">&#x2713;</td>
541 <td class="complete" align="center">&#x2713;</td>
Richard Smithe3a5ff12011-05-05 22:07:51 +0000542 <td class="na">N/A</td>
Douglas Gregorcf082ad2010-12-21 05:54:22 +0000543 <td>8.3.5</td>
544 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2445.html">N2445</a></td>
545</tr>
546<tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000547 <td>lambda expressions</td>
548 <td></td>
549 <td></td>
550 <td></td>
551 <td></td>
552 <td>5.1.2</td>
553 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1968.htm">N1968</a>
554 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf">N2550</a>
555 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2859.pdf">N2859</a>
556 </td>
557</tr>
558<tr>
559 <td>Uniform initializers </td>
560 <td></td>
561 <td></td>
562 <td></td>
563 <td></td>
564 <td>12.6</td>
565 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf">N2215</a>
566 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf">N2640</a>
567 </td>
568</tr>
569<tr>
570 <td>Memory model</td>
571 <td></td>
572 <td></td>
573 <td></td>
574 <td></td>
575 <td>1.7</td>
576 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2556.html">N2556</a></td>
577</tr>
578<tr><td colspan="7" class="category">Miscellania</td></tr>
579<tr>
580 <td>Standard attribute syntax</td>
581 <td></td>
582 <td></td>
583 <td></td>
584 <td></td>
585 <td></td>
586 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2418.pdf">N2418</a></td>
587</tr>
588<tr>
589 <td>alignment control</td>
590 <td></td>
591 <td></td>
592 <td></td>
593 <td></td>
594 <td></td>
Anders Carlssonb7fe2d672009-06-24 22:10:19 +0000595 <td></td>
596</tr>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000597<tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000598 <td>Deleted functions</td>
599 <td class="complete" align="center"></td>
600 <td class="complete" align="center"></td>
601 <td class="medium" align="center"></td>
602 <td class="na">N/A</td>
603 <td>8.4.3</td>
604 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.htm">N2326</a></br>
605 This also includes class methods.</td>
606</tr>
607<tr>
608 <td>static_assert</td>
609 <td class="complete" align="center"></td>
610 <td class="complete" align="center"></td>
611 <td class="advanced" align="center"></td>
612 <td class="na">N/A</td>
613 <td>7</td>
614 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1381.htm">N1381</a>
615 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.pdf">N1720</a>
616 </td>
617</tr>
618<tr>
619 <td>Inline namespaces</td>
Douglas Gregor21fd0232010-09-17 21:37:49 +0000620 <td class="complete" align="center">&#x2713;</td>
621 <td class="complete" align="center">&#x2713;</td>
622 <td class="complete" align="center">&#x2713;</td>
623 <td class="complete" align="center">N/A</td>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000624 <td>7.3.1</td>
625 <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 +0000626</tr>
Douglas Gregor6b6e0822010-12-21 05:43:31 +0000627<tr>
628 <td>thread_local storage</td>
629 <td></td>
630 <td></td>
631 <td></td>
632 <td></td>
633 <td>3.7.2, 7.1.1</td>
634 <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm">N2660</a></td>
635</tr>
636<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 +0000637</table>
Douglas Gregor9e0d21a2009-05-12 18:36:58 +0000638<br />
Cedric Venet084381332009-02-14 20:20:19 +0000639</div>
640</body>
641</html>