1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
5 <META http-equiv=
"Content-Type" content=
"text/html; charset=ISO-8859-1">
6 <title>Clang - C++
1z, C++
14, C++
11 and C++
98 Status
</title>
7 <link type=
"text/css" rel=
"stylesheet" href=
"menu.css">
8 <link type=
"text/css" rel=
"stylesheet" href=
"content.css">
9 <style type=
"text/css">
10 .none { background-color: #FFCCCC }
11 .partial { background-color: #FFE0B0 }
12 .svn { background-color: #FFFF99 }
13 .full { background-color: #CCFF99 }
14 .na { background-color: #DDDDDD }
15 span:target
{ background-color: #FFFFBB; outline: #DDDD55 solid thin
; }
16 th
{ background-color: #FFDDAA }
21 <!--#include virtual="menu.html.incl"-->
25 <!--*************************************************************************-->
26 <h1>C++ Support in Clang
</h1>
27 <!--*************************************************************************-->
28 <p>Last updated: $Date:
2015/
01/
29 19:
57:
42 $
</p>
30 <p>Clang fully implements all published ISO C++ standards including
<a
31 href=
"#cxx11">C++
11</a>, as well as the upcoming
<a
32 href=
"#cxx14">C++
14</a> standard, and some parts of the fledgling
<a
33 href=
"#cxx17">C++
1z
</a> standard,
34 and is considered a production-quality C++ compiler.
36 <p>The Clang community is continually striving to improve C++ standards
37 compliance between releases by submitting and tracking
<a
38 href=
"cxx_dr_status.html">C++ Defect Reports
</a> and implementing resolutions
39 as they become available.
</p>
41 <p>Experimental work is also under way to implement
<a href=
"#ts">C++ Technical
42 Specifications
</a> that will help drive the future of the C++ programming
45 <p>The
<a href=
"http://llvm.org/bugs/">LLVM bug tracker
</a> contains Clang
46 C++ components that track known bugs with Clang's language conformance in
47 each language mode.
</p>
49 <h2 id=
"cxx98">C++
98 implementation status
</h2>
51 <p>Clang implements all of the ISO C++
1998 standard
52 (including the defects addressed in the ISO C++
2003 standard)
53 except for
<tt>export
</tt> (which was removed in C++
11).
55 <h2 id=
"cxx11">C++
11 implementation status
</h2>
57 <p>Clang
3.3 and later implement all of the
<a
58 href=
"http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372">ISO
59 C++
2011 standard
</a>. The following table describes the Clang version
60 in which each feature became available.
</p>
62 <p>By default, Clang builds C++ code according to the C++
98 standard, with many
63 C++
11 features accepted as extensions. You can use Clang in C++
11 mode with the
64 <code>-std=c++
11</code> option. Clang's C++
11 mode can be used
65 with
<a href=
"http://libcxx.llvm.org/">libc++
</a> or with gcc's libstdc++, but
66 patches are needed to make
<a href=
"libstdc++4.4-clang0x.patch">libstdc++-
4.4</a>
67 work with Clang in C++
11 mode. Patches are also needed to make
68 <a href=
"libstdc++4.6-clang11.patch">libstdc++-
4.6</a>
69 and
<a href=
"libstdc++4.7-clang11.patch">libstdc++-
4.7</a> work with Clang
70 releases prior to version
3.2 in C++
11 mode.
<tt>thread_local
</tt> support
71 currently requires the C++ runtime library from g++-
4.8 or later.
</p>
73 <table width=
"689" border=
"1" cellspacing=
"0">
75 <th>Language Feature
</th>
76 <th>C++
11 Proposal
</th>
77 <th>Available in Clang?
</th>
80 <td>Rvalue references
</td>
81 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html">N2118
</a></td>
82 <td class=
"full" align=
"center">Clang
2.9</td>
85 <td> Rvalue references for
<code>*this
</code></td>
86 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm">N2439
</a></td>
87 <td class=
"full" align=
"center">Clang
2.9</td>
90 <td>Initialization of class objects by rvalues
</td>
91 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html">N1610
</a></td>
92 <td class=
"full" align=
"center">Clang
2.9</td>
95 <td>Non-static data member initializers
</td>
96 <td><a href=
"http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm">N2756
</a></td>
97 <td class=
"full" align=
"center">Clang
3.0</td>
100 <td>Variadic templates
</td>
101 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf">N2242
</a></td>
102 <td class=
"full" align=
"center">Clang
2.9</td>
105 <td> Extending variadic template template parameters
</td>
106 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf">N2555
</a></td>
107 <td class=
"full" align=
"center">Clang
2.9</td>
110 <td>Initializer lists
</td>
111 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm">N2672
</a></td>
112 <td class=
"full" align=
"center">Clang
3.1</td>
115 <td>Static assertions
</td>
116 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html">N1720
</a></td>
117 <td class=
"full" align=
"center">Clang
2.9</td>
120 <td><code>auto
</code>-typed variables
</td>
121 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf">N1984
</a></td>
122 <td class=
"full" align=
"center">Clang
2.9</td>
125 <td> Multi-declarator
<code>auto
</code></td>
126 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf">N1737
</a></td>
127 <td class=
"full" align=
"center">Clang
2.9</td>
130 <td> Removal of auto as a storage-class specifier
</td>
131 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm">N2546
</a></td>
132 <td class=
"full" align=
"center">Clang
2.9</td>
135 <td> New function declarator syntax
</td>
136 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm">N2541
</a></td>
137 <td class=
"full" align=
"center">Clang
2.9</td>
140 <td>Lambda expressions
</td>
141 <td><a href=
"http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf">N2927
</a></td>
142 <td class=
"full" align=
"center">Clang
3.1</td>
145 <td>Declared type of an expression
</td>
146 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf">N2343
</a></td>
147 <td class=
"full" align=
"center">Clang
2.9</td>
150 <td> Incomplete return types
</td>
151 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf">N3276
</a></td>
152 <td class=
"full" align=
"center">Clang
3.1</td>
155 <td>Right angle brackets
</td>
156 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html">N1757
</a></td>
157 <td class=
"full" align=
"center">Clang
2.9</td>
160 <td>Default template arguments for function templates
</td>
161 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226">DR226
</a></td>
162 <td class=
"full" align=
"center">Clang
2.9</td>
165 <td>Solving the SFINAE problem for expressions
</td>
166 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html">DR339
</a></td>
167 <td class=
"full" align=
"center">Clang
2.9</td>
170 <td>Alias templates
</td>
171 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf">N2258
</a></td>
172 <td class=
"full" align=
"center">Clang
3.0</td>
175 <td>Extern templates
</td>
176 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm">N1987
</a></td>
177 <td class=
"full" align=
"center">Clang
2.9</td>
180 <td>Null pointer constant
</td>
181 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">N2431
</a></td>
182 <td class=
"full" align=
"center">Clang
3.0</td>
185 <td>Strongly-typed enums
</td>
186 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf">N2347
</a></td>
187 <td class=
"full" align=
"center">Clang
2.9</td>
190 <td>Forward declarations for enums
</td>
191 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf">N2764
</a>
192 <br><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1206">DR1206
</a></td>
193 <td class=
"full" align=
"center">Clang
3.1</td>
196 <td>Standardized attribute syntax
</td>
197 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf">N2761
</a></td>
198 <td class=
"full" align=
"center">Clang
3.3 <a href=
"#n2761">(
1)
</a></td>
201 <td>Generalized constant expressions
</td>
202 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">N2235
</a></td>
203 <td class=
"full" align=
"center">Clang
3.1</td>
206 <td>Alignment support
</td>
207 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf">N2341
</a></td>
208 <td class=
"full" align=
"center">Clang
3.3</td>
211 <td>Conditionally-support behavior
</td>
212 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1627.pdf">N1627
</a></td>
213 <td class=
"full" align=
"center">Clang
2.9</td>
216 <td>Changing undefined behavior into diagnosable errors
</td>
217 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1727.pdf">N1727
</a></td>
218 <td class=
"full" align=
"center">Clang
2.9</td>
221 <td>Delegating constructors
</td>
222 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf">N1986
</a></td>
223 <td class=
"full" align=
"center">Clang
3.0</td>
226 <td>Inheriting constructors
</td>
227 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm">N2540
</a></td>
228 <td class=
"full" align=
"center">Clang
3.3</td>
231 <td>Explicit conversion operators
</td>
232 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf">N2437
</a></td>
233 <td class=
"full" align=
"center">Clang
3.0</td>
236 <td>New character types
</td>
237 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html">N2249
</a></td>
238 <td class=
"full" align=
"center">Clang
2.9</td>
241 <td>Unicode string literals
</td>
242 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm">N2442
</a></td>
243 <td class=
"full" align=
"center">Clang
3.0</td>
246 <td>Raw string literals
</td>
247 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm">N2442
</a></td>
248 <td class=
"full" align=
"center">Clang
3.0</td>
251 <td>Universal character names in literals
</td>
252 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html">N2170
</a></td>
253 <td class=
"full" align=
"center">Clang
3.1</td>
256 <td>User-defined literals
</td>
257 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf">N2765
</a></td>
258 <td class=
"full" align=
"center">Clang
3.1</td>
261 <td>Standard Layout Types
</td>
262 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm">N2342
</a></td>
263 <td class=
"full" align=
"center">Clang
3.0</td>
266 <td>Defaulted functions
</td>
267 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm">N2346
</a></td>
268 <td class=
"full" align=
"center">Clang
3.0</td>
271 <td>Deleted functions
</td>
272 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm">N2346
</a></td>
273 <td class=
"full" align=
"center">Clang
2.9</td>
276 <td>Extended friend declarations
</td>
277 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf">N1791
</a></td>
278 <td class=
"full" align=
"center">Clang
2.9</td>
281 <td>Extending
<code>sizeof
</code></td>
282 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html">N2253
</a>
283 <br><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#850">DR850
</a></td>
284 <td class=
"full" align=
"center">Clang
3.1</td>
287 <td>Inline namespaces
</td>
288 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm">N2535
</a></td>
289 <td class=
"full" align=
"center">Clang
2.9</td>
292 <td>Unrestricted unions
</td>
293 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf">N2544
</a></td>
294 <td class=
"full" align=
"center">Clang
3.1</td>
297 <td>Local and unnamed types as template arguments
</td>
298 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm">N2657
</a></td>
299 <td class=
"full" align=
"center">Clang
2.9</td>
302 <td>Range-based for
</td>
303 <td><a href=
"http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html">N2930
</a></td>
304 <td class=
"full" align=
"center">Clang
3.0</td>
307 <td>Explicit virtual overrides
</td>
308 <td><a href=
"http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm">N2928
</a>
309 <br><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm">N3206
</a>
310 <br><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm">N3272
</a></td>
311 <td class=
"full" align=
"center">Clang
3.0</td>
314 <td>Minimal support for garbage collection and reachability-based leak detection
</td>
315 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm">N2670
</a></td>
316 <td class=
"na" align=
"center">N/A
<a href=
"#n2670">(
2)
</a></td>
319 <td>Allowing move constructors to throw [noexcept]
</td>
320 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html">N3050
</a></td>
321 <td class=
"full" align=
"center">Clang
3.0</td>
324 <td>Defining move special member functions
</td>
325 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html">N3053
</a></td>
326 <td class=
"full" align=
"center">Clang
3.0</td>
329 <tr class=
"separator">
330 <th align=
"center" colspan=
"3">Concurrency
</th>
333 <td>Sequence points
</td>
334 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html">N2239
</a></td>
335 <td class=
"full" align=
"center">Clang
3.3</td>
338 <td>Atomic operations
</td>
339 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html">N2427
</a></td>
340 <td class=
"full" align=
"center">Clang
3.1</td>
343 <td>Strong Compare and Exchange
</td>
344 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2748.html">N2748
</a></td>
345 <td class=
"full" align=
"center">Clang
3.1 <a href=
"#n2748">(
3)
</a></td>
348 <td>Bidirectional Fences
</td>
349 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm">N2752
</a></td>
350 <td class=
"full" align=
"center">Clang
3.1</td>
354 <td>Memory model
</td>
355 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm">N2429
</a></td>
356 <td class=
"full" align=
"center">Clang
3.2</td>
359 <td>Data-dependency ordering: atomics and memory model
</td>
360 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm">N2664
</a></td>
361 <td class=
"full" align=
"center">Clang
3.2 <a href=
"#n2664">(
4)
</a></td>
364 <td>Propagating exceptions
</td>
365 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html">N2179
</a></td>
366 <td class=
"full" align=
"center">Clang
2.9</td>
369 <td>Allow atomics use in signal handlers
</td>
370 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm">N2547
</a></td>
371 <td class=
"full" align=
"center">Clang
3.1</td>
374 <td>Thread-local storage
</td>
375 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm">N2659
</a></td>
376 <td class=
"full" align=
"center">Clang
3.3</td>
379 <td>Dynamic initialization and destruction with concurrency
</td>
380 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm">N2660
</a></td>
381 <td class=
"full" align=
"center">Clang
2.9</td>
384 <tr class=
"separator">
385 <th align=
"center" colspan=
"3">C99 Features in C++
11</th>
388 <td><code>__func__
</code> predefined identifier
</td>
389 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm">N2340
</a></td>
390 <td class=
"full" align=
"center">Clang
2.9</td>
393 <td>C99 preprocessor
</td>
394 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm">N1653
</a></td>
395 <td class=
"full" align=
"center">Clang
2.9</td>
398 <td><code>long long
</code></td>
399 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf">N1811
</a></td>
400 <td class=
"full" align=
"center">Clang
2.9</td>
403 <td>Extended integral types
</td>
404 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf">N1988
</a></td>
405 <td class=
"na" align=
"center">N/A
<a href=
"#n1988">(
5)
</a></td>
410 <span id=
"n2761">(
1): The
<code>[[carries_dependency]]
</code> attribute
411 has no effect.
</span><br>
412 <span id=
"n2670">(
2): No compiler changes are required for an implementation
413 such as Clang that does not provide garbage collection.
</span><br>
414 <span id=
"n2748">(
3): All compare-exchange operations are emitted as
415 strong compare-exchanges.
</span><br>
416 <span id=
"n2664">(
4):
<code>memory_order_consume
</code> is lowered to
417 <code>memory_order_acquire
</code>.
</span><br>
418 <span id=
"n1988">(
5): No compiler changes are required for an implementation
419 such as Clang that does not provide any extended integer types.
420 <code>__int128
</code> is not treated as an extended integer type,
421 because changing
<code>intmax_t
</code> would be an ABI-incompatible
425 <h2 id=
"cxx14">C++
14 implementation status
</h2>
427 <p>Clang
3.4 and later implement all of the Draft International Standard (see
<a
428 href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.pdf">most
429 recent publicly available draft
</a>)
430 of the upcoming C++
14 language standard. The following table describes the
431 Clang version in which each feature became available.
</p>
433 <p>You can use Clang in C++
14 mode with the
<code>-std=c++
14</code> option
434 (use
<code>-std=c++
1y
</code> in Clang
3.4 and earlier).
</p>
436 <table width=
"689" border=
"1" cellspacing=
"0">
438 <th>Language Feature
</th>
439 <th>C++
14 Proposal
</th>
440 <th>Available in Clang?
</th>
443 <td>Tweak to certain C++ contextual conversions
</td>
444 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3323.pdf">N3323
</a></td>
445 <td class=
"full" align=
"center">Clang
3.4</td>
448 <td>Binary literals
</td>
449 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf">N3472
</a></td>
450 <td class=
"full" align=
"center">Yes
</td>
453 <td>decltype(auto)
</td>
454 <td rowspan=
2 style=
"vertical-align:middle"><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html">N3638
</a></td>
455 <td class=
"full" align=
"center">Clang
3.3</td>
458 <td>Return type deduction for normal functions
</td>
459 <td class=
"full" align=
"center">Clang
3.4</td>
462 <td>Initialized lambda captures
</td>
463 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3648.html">N3648
</a></td>
464 <td class=
"full" align=
"center">Clang
3.4</td>
467 <td>Generic lambdas
</td>
468 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3649.html">N3649
</a></td>
469 <td class=
"full" align=
"center">Clang
3.4</td>
472 <td>Variable templates
</td>
473 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3651.pdf">N3651
</a></td>
474 <td class=
"full" align=
"center">Clang
3.4</td>
477 <td>Relaxing requirements on constexpr functions
</td>
478 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html">N3652
</a></td>
479 <td class=
"full" align=
"center">Clang
3.4</td>
482 <td>Member initializers and aggregates
</td>
483 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3653.html">N3653
</a></td>
484 <td class=
"full" align=
"center">Clang
3.3</td>
487 <td>Clarifying memory allocation
</td>
488 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3664.html">N3664
</a></td>
489 <td class=
"full" align=
"center">Clang
3.4</td>
492 <td><tt>[[deprecated]]
</tt> attribute
</td>
493 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html">N3760
</a></td>
494 <td class=
"full" align=
"center">Clang
3.4</td>
497 <td>Single quotation mark as digit separator
</td>
498 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3781.pdf">N3781
</a></td>
499 <td class=
"full" align=
"center">Clang
3.4</td>
502 <td>C++ Sized Deallocation
</td>
503 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3778.html">N3778
</a></td>
504 <td class=
"full" align=
"center">Clang
3.4</td>
508 <h2 id=
"cxx17">C++
1z implementation status
</h2>
510 <p>Clang has
<b>highly experimental
</b> support for some proposed features of
511 the C++ standard following C++
14,
512 provisionally named C++
1z. The following table describes which C++
1z features
513 have been implemented in Clang and in which Clang version they became
516 <p>Note that support for these features may change or be removed without notice,
517 as the draft C++
1z standard evolves.
</p>
519 <p>You can use Clang in C++
1z mode with the
<code>-std=c++
1z
</code> option.
</p>
521 <table width=
"689" border=
"1" cellspacing=
"0">
523 <th>Language Feature
</th>
524 <th>C++
1z Proposal
</th>
525 <th>Available in Clang?
</th>
527 <!-- Issaquah papers -->
529 <td><tt>static_assert
</tt> with no message
</td>
530 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3928.pdf">N3928
</a></td>
531 <td class=
"full" align=
"center">Clang
3.5</td>
533 <!-- Rapperswil papers -->
535 <td>Disabling trigraph expansion by default
</td>
536 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4086.html">N4086
</a></td>
537 <td class=
"full" align=
"center">Clang
3.5</td>
541 <td rowspan="2">Terse range-based for loops (removed from C++1z)</td>
542 <td rowspan="2"><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3994.htm">N3994</a></td>
543 <td class="none" align="center">Clang 3.5: Yes</td>
546 <td class="svn" align="center">SVN: No</td>
550 <td><tt>typename
</tt> in a template template parameter
</td>
551 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4051.html">N4051
</a></td>
552 <td class=
"full" align=
"center">Clang
3.5</td>
555 <td>New
<tt>auto
</tt> rules for direct-list-initialization
556 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3922.html">N3922
</a></td>
557 <td class=
"none" align=
"center">No
</td>
559 <!-- Urbana papers -->
561 <td>Fold expressions
</td>
562 <td><!--<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4295.html">-->N4295
<!--</a>--></td>
563 <td class=
"svn" align=
"center">SVN
</td>
566 <td><tt>u8
</tt> character literals
</td>
567 <td><!--<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4267.html">-->N4267
<!--</a>--></td>
568 <td class=
"svn" align=
"center">SVN
</td>
571 <td>Nested namespace definition
</td>
572 <td><!--<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4230.html">-->N4230
<!--</a>--></td>
573 <td class=
"svn" align=
"center">SVN
</td>
576 <td>Attributes for namespaces and enumerators
</td>
577 <td><!--<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4266.html">-->N4266
<!--</a>--></td>
578 <td class=
"svn" align=
"center">SVN
</td>
581 <td>Allow constant evaluation for all non-type template arguments
</td>
582 <td><!--<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4268.html">-->N4268
<!--</a>--></td>
583 <td class=
"svn" align=
"center">SVN
</td>
587 <h2 id=
"ts">Technical specifications and standing documents
</h2>
589 <p>ISO C++ also publishes a number of documents describing additional language
590 and library features that are not part of standard C++. The following table
591 describes which language features have been implemented in Clang and in which
592 Clang version they became available:
</p>
594 <table width=
"689" border=
"1" cellspacing=
"0">
597 <th>Latest draft
</th>
598 <th>Available in Clang?
</th>
601 <td rowspan=
"2">SD-
6: SG10 feature test recommendations
</td>
602 <td rowspan=
"2"><a href=
"http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">SD-
6</a></td>
603 <td class=
"full" align=
"center">
604 Clang
3.4 (
<a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3745">N3745
</a>)
</br>
608 <td class=
"svn" align=
"center">
609 SVN (
<a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4200">N4200
</a>)
</a>
613 <td>[DRAFT TS] Array extensions (arrays of runtime bound)
</td>
614 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3820.html">N3820
</a></td>
615 <td class=
"none" align=
"center">No
</td>
618 <td>[DRAFT TS] Library fundamentals (invocation type traits)
</td>
619 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3908.html">N3908
</a></td>
620 <td class=
"none" align=
"center">No
</td>
623 <td>[DRAFT TS] Concepts
</td>
624 <td><a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3929.pdf">N3929
</a></td>
625 <td class=
"none" align=
"center">No
</td>