blob: 0dce8cf9673224942e6995a40f67ad51da2bf5a8 [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 Gregor8c327082011-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 Gregor57f1a002010-02-05 23:51:14 +000036
Chris Lattner900e32d2010-05-21 20:59:40 +000037<h2 id="cxx0x">C++0x Implementation status</h2>
38
Douglas Gregor8c327082011-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 Lattner900e32d2010-05-21 20:59:40 +000041
Douglas Gregor8c327082011-07-21 17:46:15 +000042<p>You can use Clang in C++0x mode either
Jeffrey Yasskin46ba01a2011-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 Lattner900e32d2010-05-21 20:59:40 +000047
Cedric Venet3d658642009-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 Lattner900e32d2010-05-21 20:59:40 +000060 progress toward implementing the complete C++'0x standard. We use a
Cedric Venet3d658642009-02-14 20:20:19 +000061 simple, somewhat arbitrary color-coding scheme to describe the
Chris Lattner900e32d2010-05-21 20:59:40 +000062 relative completeness of features:</p>
Cedric Venet3d658642009-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 Gregor07554022009-05-12 17:55:28 +000072 <th>Complete</th>
Douglas Gregor08765a92010-12-21 05:43:31 +000073<!--
Douglas Gregor07554022009-05-12 17:55:28 +000074 <th>Complete (with tests for each paragraph)</th>
Douglas Gregor08765a92010-12-21 05:43:31 +000075-->
Cedric Venet3d658642009-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 Gregor08765a92010-12-21 05:43:31 +000084 <td class="complete">rXXXXXX</td>
85<!--
Cedric Venet3d658642009-02-14 20:20:19 +000086 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor08765a92010-12-21 05:43:31 +000087-->
Cedric Venet3d658642009-02-14 20:20:19 +000088 </tr>
89</table>
90
Douglas Gregor08765a92010-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 Venet3d658642009-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 Lattner900e32d2010-05-21 20:59:40 +000098paragraphs in the relevant C++'0x draft standard. The major
99components are:</p>
Cedric Venet3d658642009-02-14 20:20:19 +0000100
101<dl>
102 <dt>Parse</dt>
Chris Lattner900e32d2010-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 Venet3d658642009-02-14 20:20:19 +0000107
108 <dt>AST</dt>
Chris Lattner900e32d2010-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 Venet3d658642009-02-14 20:20:19 +0000112
113 <dt>Sema</dt>
Chris Lattner900e32d2010-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 Venet3d658642009-02-14 20:20:19 +0000117
118 <dt>CodeGen</dt>
Chris Lattner900e32d2010-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 Venet3d658642009-02-14 20:20:19 +0000121</dl>
122
Chris Lattner900e32d2010-05-21 20:59:40 +0000123<p>Updates to this table are welcome! Tests for the various features are also
Cedric Venet3d658642009-02-14 20:20:19 +0000124welcome!</p>
125
126<table width="689" border="1" cellspacing="0">
Richard Smith5f3d30b2011-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 Lattner900e32d2010-05-21 20:59:40 +0000128</tr>
Cedric Venet3d658642009-02-14 20:20:19 +0000129 <tr>
Chris Lattner900e32d2010-05-21 20:59:40 +0000130 <th>Feature</th>
Cedric Venet3d658642009-02-14 20:20:19 +0000131 <th>Parse</th>
132 <th>AST</th>
133 <th>Sema</th>
134 <th>CodeGen</th>
Douglas Gregor08765a92010-12-21 05:43:31 +0000135 <th>Standard Sections</th>
Cedric Venet3d658642009-02-14 20:20:19 +0000136 <th>Notes</th>
137 </tr>
Douglas Gregor08765a92010-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 Smith5f3d30b2011-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 Gregor08765a92010-12-21 05:43:31 +0000145 <td>6.5.4</td>
Richard Smith5f3d30b2011-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 Gregor08765a92010-12-21 05:43:31 +0000148</tr>
Douglas Gregor6d507a62009-05-07 17:50:16 +0000149
Douglas Gregor08765a92010-12-21 05:43:31 +0000150<tr><td colspan="7" class="category">Type System Modifications</td></tr>
Sebastian Redl6e8ed162009-05-10 18:38:11 +0000151<tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000152 <td>rvalue references</td>
Douglas Gregor07554022009-05-12 17:55:28 +0000153 <td class="complete" align="center"></td>
154 <td class="complete" align="center"></td>
Douglas Gregord1a26432011-01-26 21:35:14 +0000155 <td class="complete" align="center"></td>
156 <td class="complete"></td>
Douglas Gregor08765a92010-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 Gregord1a26432011-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 Gregor08765a92010-12-21 05:43:31 +0000160 </td>
Sebastian Redl6e8ed162009-05-10 18:38:11 +0000161</tr>
162<tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000163 <td>decltype</td>
Anders Carlsson3eb43a02009-06-24 22:10:19 +0000164 <td class="complete" align="center">&#x2713;</td>
165 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor28f03962010-09-17 21:37:49 +0000166 <td class="advanced" align="center"></td>
Richard Smithf184f9a2011-05-05 22:07:51 +0000167 <td class="advanced" align="center"></td>
Douglas Gregor08765a92010-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 Smith6a4e73c2011-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 Gregor08765a92010-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 Gregorbe7a1d32011-07-21 17:41:00 +0000187 <td class="advanced" align="center"></td>
188 <td class="advanced"></td>
Douglas Gregor08765a92010-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>
Douglas Gregor785200d2011-07-27 15:10:09 +0000241 <td class="complete"></td>
242 <td class="complete"></td>
243 <td class="complete"></td>
244 <td class="complete"></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000245 <td>2.14.3, 2.14.5</td>
Douglas Gregor28f03962010-09-17 21:37:49 +0000246 <td></td>
247</tr>
248<tr>
Douglas Gregor08765a92010-12-21 05:43:31 +0000249 <td>Raw string literal types</td>
Craig Topper22998ad2011-08-11 04:09:26 +0000250 <td class="complete"></td>
251 <td class="complete"></td>
252 <td class="complete"></td>
253 <td class="complete"></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000254 <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 Lattnerfc8f0e12011-04-15 05:22:18 +0000270 <td>POD definition changes</td>
Douglas Gregor08765a92010-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>
Sean Hunt059ce0d2011-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 Gregor08765a92010-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>
Richard Smithee2cdbd2011-07-21 18:02:57 +0000323 <td class="complete" align="center">&#x2713;</td>
324 <td class="complete" align="center">&#x2713;</td>
325 <td class="complete" align="center">&#x2713;</td>
326 <td class="complete" align="center">&#x2713;</td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000327 <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>
Douglas Gregor34bc0ec2011-07-25 18:53:48 +0000341 <td class="basic"></td>
342 <td class="basic"></td>
343 <td class="basic"></td>
344 <td class="basic"></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000345 <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>
Douglas Gregor34bc0ec2011-07-25 18:53:48 +0000369 <td>Explicit override controls</td>
370 <td class="complete" align="center">&#x2713;</td>
371 <td class="complete" align="center">&#x2713;</td>
372 <td class="complete" align="center">&#x2713;</td>
373 <td class="na"></td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000374 <td></td>
375 <td></td>
376</tr>
377<tr>
378 <td>Explicit conversion operators</td>
Douglas Gregor34bc0ec2011-07-25 18:53:48 +0000379 <td class="complete" align="center">&#x2713;</td>
380 <td class="complete" align="center">&#x2713;</td>
381 <td class="advanced" align="center">&#x2717;</td>
382 <td class="na">N/A</td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000383 <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>
Douglas Gregor34bc0ec2011-07-25 18:53:48 +0000386 Does not implement DR899</td>
Douglas Gregor08765a92010-12-21 05:43:31 +0000387</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 Gregor4c9131a2011-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 Gregor08765a92010-12-21 05:43:31 +0000404 <td>14.6.3</td>
Douglas Gregor4c9131a2011-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 Gregor08765a92010-12-21 05:43:31 +0000406 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2087.pdf">N2087</a>
Douglas Gregor4c9131a2011-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 Gregord1a26432011-01-26 21:35:14 +0000409 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf">N2555</a>
Douglas Gregor08765a92010-12-21 05:43:31 +0000410 </td>
411</tr>
412<tr>
413 <td>template aliases</td>
Richard Smith3e4c6c42011-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 Gregor08765a92010-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 Gregor08765a92010-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 Gregord1a26432011-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 Gregor08765a92010-12-21 05:43:31 +0000438 <td>14.8.2</td>
Douglas Gregord1a26432011-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 Gregor08765a92010-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 Gregor28f03962010-09-17 21:37:49 +0000464 <td class="complete" align="center">&#x2713;</td>
465 <td class="complete" align="center">&#x2713;</td>
Anders Carlsson3eb43a02009-06-24 22:10:19 +0000466 <td class="complete" align="center">&#x2713;</td>
467 <td class="na">N/A</td>
Douglas Gregor08765a92010-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 Gregor29236f42011-03-27 09:49:38 +0000474 <td class="complete"></td>
Douglas Gregor08765a92010-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 Gregor1ce79652010-12-21 05:54:22 +0000538 <td>Late-specified return type</td>
Richard Smith6a4e73c2011-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 Smithf184f9a2011-05-05 22:07:51 +0000542 <td class="na">N/A</td>
Douglas Gregor1ce79652010-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 Gregor08765a92010-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 Carlsson3eb43a02009-06-24 22:10:19 +0000595 <td></td>
596</tr>
Douglas Gregor28f03962010-09-17 21:37:49 +0000597<tr>
Douglas Gregor08765a92010-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 Gregor28f03962010-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 Gregor08765a92010-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 Gregor28f03962010-09-17 21:37:49 +0000626</tr>
Douglas Gregor08765a92010-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 Venet3d658642009-02-14 20:20:19 +0000637</table>
Douglas Gregor01cf1122009-05-12 18:36:58 +0000638<br />
Cedric Venet3d658642009-02-14 20:20:19 +0000639</div>
640</body>
641</html>