Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: styleguide/c++/c++11.html

Issue 603043002: c++11: Add discussion thread links, ban things that don't work with MSVS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <!-- 2 <!--
3 Copyright 2014 The Chromium Authors. All rights reserved. 3 Copyright 2014 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be 4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file. 5 found in the LICENSE file.
6 --> 6 -->
7 <html> 7 <html>
8 <head> 8 <head>
9 <meta charset="utf-8"> 9 <meta charset="utf-8">
10 <link rel="stylesheet" href="c++11.css"> 10 <link rel="stylesheet" href="c++11.css">
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 <td><a href="http://stackoverflow.com/questions/15785496/c-templates-angle-brack ets-pitfall-what-is-the-c11-fix"> 63 <td><a href="http://stackoverflow.com/questions/15785496/c-templates-angle-brack ets-pitfall-what-is-the-c11-fix">
64 C++ Templates Angle Brackets Pitfall</a></td> 64 C++ Templates Angle Brackets Pitfall</a></td>
65 <td>Recommended to increase readability. Approved without discussion.</td> 65 <td>Recommended to increase readability. Approved without discussion.</td>
66 </tr> 66 </tr>
67 67
68 <tr> 68 <tr>
69 <td>Final Specifier</td> 69 <td>Final Specifier</td>
70 <td><code>final</code></td> 70 <td><code>final</code></td>
71 <td> Indicates that a class or function is final and cannot be overridden</td> 71 <td> Indicates that a class or function is final and cannot be overridden</td>
72 <td><a href="http://en.cppreference.com/w/cpp/language/final">final Language Ref erence</a></td> 72 <td><a href="http://en.cppreference.com/w/cpp/language/final">final Language Ref erence</a></td>
73 <td>Recommended for new code. Existing uses of the <code>FINAL</code> macro will be <a href="https://crbug.com/417463">replaced throughout the codebase</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/VTNZzi zN0zo">Discussion</a></td> 73 <td>Recommended for new code. Existing uses of the <code>FINAL</code> macro will be <a href="https://crbug.com/417463">replaced throughout the codebase</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/VTNZzi zN0zo">Discussion thread</a></td>
74 </tr> 74 </tr>
75 75
76 <tr> 76 <tr>
77 <td>Local Types as Template Arguments</td> 77 <td>Local Types as Template Arguments</td>
78 <td></td> 78 <td></td>
79 <td>Allows local and unnamed types as template arguments</td> 79 <td>Allows local and unnamed types as template arguments</td>
80 <td><a href="http://stackoverflow.com/questions/742607/using-local-classes-with- stl-algorithms"> 80 <td><a href="http://stackoverflow.com/questions/742607/using-local-classes-with- stl-algorithms">
81 Local types, types without linkage and unnamed types as template arguments</a></ td> 81 Local types, types without linkage and unnamed types as template arguments</a></ td>
82 <td>Usage should be rare. Approved without discussion.</td> 82 <td>Usage should be rare. Approved without discussion.</td>
83 </tr> 83 </tr>
(...skipping 30 matching lines...) Expand all
114 114
115 </tbody> 115 </tbody>
116 </table> 116 </table>
117 117
118 <h2 id="blacklist">C++11 Blacklist (Disallowed and Banned Features)</h2> 118 <h2 id="blacklist">C++11 Blacklist (Disallowed and Banned Features)</h2>
119 119
120 <p>This section lists features that are not allowed to be used yet. 120 <p>This section lists features that are not allowed to be used yet.
121 121
122 <h3 id="blacklist_banned">C++11 Banned Features</h3> 122 <h3 id="blacklist_banned">C++11 Banned Features</h3>
123 123
124 <p>None yet! This section will list C++11 features that are not allowed in the 124 <p>This section will list C++11 features that are not allowed in the Chromium
125 Chromium codebase. 125 codebase.
126 </p> 126 </p>
127 127
128 <!--
129 <table id="banned_list" class="unlined striped"> 128 <table id="banned_list" class="unlined striped">
130 <tbody> 129 <tbody>
131 130
132 <tr> 131 <tr>
133 <th style='width:240px;'>Feature or Library</th> 132 <th style='width:240px;'>Feature or Library</th>
134 <th style='width:240px;'>Snippet</th> 133 <th style='width:240px;'>Snippet</th>
135 <th style='width:240px;'>Description</th> 134 <th style='width:240px;'>Description</th>
136 <th style='width:240px;'>Documentation Link</th> 135 <th style='width:240px;'>Documentation Link</th>
137 <th style='width:240px;'>Status</th> 136 <th style='width:240px;'>Notes</th>
137 </tr>
138
139 <tr>
140 <td>Constant Expressions</td>
141 <td><code>constexpr</code></td>
142 <td>Compile-time constant expressions</td>
143 <td>TODO: documentation link</td>
jamesr 2014/09/25 06:01:52 could we link to a crbug for these things? that wa
144 <td>Doesn't work in MSVS2013. Reevalute once it does.<a
145 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#constexpr ">Google
146 Style Guide on <code>constexpr</code></a></td>
147 </tr>
148
149 <tr>
150 <td>Function Local Variable</td>
151 <td><code>__func__</code></td>
152 <td>Provides a local variable of the name of the enclosing
153 function for logging purposes</td>
154 <td><a href="http://www.informit.com/guides/content.aspx?g=cplusplus&amp;seqNum= 338">
155 The __func__ Predeclared Identifier is Coming to C++</a></td>
156 <td>Doesn't work in MSVS2013. Reevaluate once it does. <a href="https://groups.g oogle.com/a/chromium.org/forum/#!topic/chromium-dev/ojGfcgSDzHM">Discussion thre ad</a></td>
157 </tr>
158
159 <tr>
160 <td>UTF-16 and UTF-32 Support (16-Bit and 32-Bit Character Types)</td>
161 <td><code>char16_t</code> and <code>char32_t</code></td>
162 <td>Provides character types for handling 16-bit
163 and 32-bit code units (useful for encoding
164 UTF-16 and UTF-32 string data)</td>
165 <td><a href="http://en.cppreference.com/w/cpp/language/types">
166 Fundamental types</a></td>
167 <td>Doesn't work in MSVS2013. Reevaluate once it does. Non-UTF-8 text is
168 banned by the
169 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Non-AS CII_Characters">
170 C++ Style Guide</a>. However, may be useful for
171 consuming non-ASCII data. <a href="https://groups.google.com/a/chromium.org/foru m/#!topic/chromium-dev/ME2kL7_Kvyk">Discussion thread</a></td>
172 </tr>
173
174 <tr>
175 <td>UTF-8, UTF-16, UTF-32 String Literals</td>
176 <td><code>u8&quot;<i>string</i>&quot;, u&quot;<i>string</i>&quot;, U&quot;<i>str ing</i>&quot;</code></td>
177 <td>Enforces UTF-8, UTF-16, UTF-32 encoding on all string literals</td>
178 <td><a href="http://en.cppreference.com/w/cpp/language/string_literal">
179 string literal</a></td>
180 <td>Does not yet work in MSVS2013. Reevaluate once it does. <a href="https://gro ups.google.com/a/chromium.org/forum/#!topic/chromium-dev/gcoUbcjfsII">Discussion thread</a></td>
138 </tr> 181 </tr>
139 182
140 </tbody> 183 </tbody>
141 </table> 184 </table>
142 -->
143 185
144 <h3 id="blacklist_review">C++11 Features To Be Discussed</h3> 186 <h3 id="blacklist_review">C++11 Features To Be Discussed</h3>
145 187
146 <p>The following C++ language features are currently disallowed. 188 <p>The following C++ language features are currently disallowed.
147 See the top of this page on how to propose moving a feature from this list 189 See the top of this page on how to propose moving a feature from this list
148 into the allowed or banned sections. Note that not all of these features 190 into the allowed or banned sections. Note that not all of these features
149 work in all our compilers yet.</p> 191 work in all our compilers yet.</p>
150 192
151 <table id="blacklist_review_list" class="unlined striped"> 193 <table id="blacklist_review_list" class="unlined striped">
152 <tbody> 194 <tbody>
153 195
154 <tr> 196 <tr>
155 <th style='width:240px;'>Feature</th> 197 <th style='width:240px;'>Feature</th>
156 <th style='width:240px;'>Snippet</th> 198 <th style='width:240px;'>Snippet</th>
157 <th style='width:240px;'>Description</th> 199 <th style='width:240px;'>Description</th>
158 <th style='width:240px;'>Documentation Link</th> 200 <th style='width:240px;'>Documentation Link</th>
159 <th style='width:240px;'>Notes</th> 201 <th style='width:240px;'>Notes</th>
160 </tr> 202 </tr>
161 203
162 <tr> 204 <tr>
163 <td>Aliases</td> 205 <td>Aliases</td>
164 <td><code>using <i>new_alias</i> = <i>typename</i></code></td> 206 <td><code>using <i>new_alias</i> = <i>typename</i></code></td>
165 <td>Allow parameterized typedefs</td> 207 <td>Allow parameterized typedefs</td>
166 <td><a href="http://en.cppreference.com/w/cpp/language/type_alias">Type alias (u sing syntax)</a></td> 208 <td><a href="http://en.cppreference.com/w/cpp/language/type_alias">Type alias (u sing syntax)</a></td>
167 <td></td> 209 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /8dOAMzgR4ao">Discussion thread</a></td>
168 </tr> 210 </tr>
169 211
170 <tr> 212 <tr>
171 <td>Alignment Features</td> 213 <td>Alignment Features</td>
172 <td> 214 <td>
173 <code>alignas</code> specifier, 215 <code>alignas</code> specifier,
174 <code>std::alignment_of&lt;T&gt;</code>, 216 <code>std::alignment_of&lt;T&gt;</code>,
175 <code>std::aligned_union&lt;Size, ...Types&gt;</code> and 217 <code>std::aligned_union&lt;Size, ...Types&gt;</code> and
176 <code>std::max_align_t</code></td> 218 <code>std::max_align_t</code></td>
177 <td>Object alignment</td> 219 <td>Object alignment</td>
(...skipping 15 matching lines...) Expand all
193 <td>Automatic Types</td> 235 <td>Automatic Types</td>
194 <td><code>auto</code></td> 236 <td><code>auto</code></td>
195 <td>Automatic type deduction</td> 237 <td>Automatic type deduction</td>
196 <td>TODO: documentation link</td> 238 <td>TODO: documentation link</td>
197 <td><a 239 <td><a
198 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#auto">Goo gle 240 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#auto">Goo gle
199 Style Guide on <code>auto</code></a></td> 241 Style Guide on <code>auto</code></a></td>
200 </tr> 242 </tr>
201 243
202 <tr> 244 <tr>
203 <td>Constant Expressions</td>
204 <td><code>constexpr</code></td>
205 <td>Compile-time constant expressions</td>
206 <td>TODO: documentation link</td>
207 <td>Not supported in MSVS2013. <a
208 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#constexpr ">Google
209 Style Guide on <code>constexpr</code></a></td>
210 </tr>
211
212 <tr>
213 <td>Declared Type Accessor</td> 245 <td>Declared Type Accessor</td>
214 <td><code>decltype(<i>expression</i>)</code></td> 246 <td><code>decltype(<i>expression</i>)</code></td>
215 <td>Provides a means to determine the type of an expression at compile-time, 247 <td>Provides a means to determine the type of an expression at compile-time,
216 useful most often in templates.</td> 248 useful most often in templates.</td>
217 <td><a href="http://en.cppreference.com/w/cpp/language/decltype"> 249 <td><a href="http://en.cppreference.com/w/cpp/language/decltype">
218 decltype specifier</a></td> 250 decltype specifier</a></td>
219 <td></td> 251 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /_zoNvZd_dSo">Discussion thread</a></td>
220 </tr> 252 </tr>
221 253
222 <tr> 254 <tr>
223 <td>Default Function Creation</td> 255 <td>Default Function Creation</td>
224 <td><code><i>Function</i>(<i>arguments</i>) = default;</code></td> 256 <td><code><i>Function</i>(<i>arguments</i>) = default;</code></td>
225 <td>Instructs the compiler to generate a default version 257 <td>Instructs the compiler to generate a default version
226 of the indicated function</td> 258 of the indicated function</td>
227 <td><a href="http://stackoverflow.com/questions/823935/whats-the-point-in-defaul ting-functions-in-c11"> 259 <td><a href="http://stackoverflow.com/questions/823935/whats-the-point-in-defaul ting-functions-in-c11">
228 What's the point in defaulting functions in C++11?</a></td> 260 What's the point in defaulting functions in C++11?</a></td>
229 <td></td> 261 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /qgU4mh_MpGA">Discussion thread</a></td>
230 </tr> 262 </tr>
231 263
232 <tr> 264 <tr>
233 <td>Default Function Template Arguments</td> 265 <td>Default Function Template Arguments</td>
234 <td><code>template &lt;typename T = <i>type</i>&gt; <br /> 266 <td><code>template &lt;typename T = <i>type</i>&gt; <br />
235 &nbsp;&nbsp;<i>type</i> <i>Function</i>(T <i>var</i>) {}</code></td> 267 &nbsp;&nbsp;<i>type</i> <i>Function</i>(T <i>var</i>) {}</code></td>
236 <td>Allow function templates, like classes, to have default arguments</td> 268 <td>Allow function templates, like classes, to have default arguments</td>
237 <td><a href="http://stackoverflow.com/questions/2447458/default-template-argumen ts-for-function-templates"> 269 <td><a href="http://stackoverflow.com/questions/2447458/default-template-argumen ts-for-function-templates">
238 Default Template Arguments for Function Templates</a></td> 270 Default Template Arguments for Function Templates</a></td>
239 <td></td> 271 <td></td>
240 </tr> 272 </tr>
241 273
242 <tr> 274 <tr>
243 <td>Delegated Constructors</td> 275 <td>Delegated Constructors</td>
244 <td><code>Class() : Class(0) {}</code><br /> 276 <td><code>Class() : Class(0) {}</code><br />
245 <code>Class(<i>type</i> <i>var</i>) : Class(<i>var</i>, 0)</code></td> 277 <code>Class(<i>type</i> <i>var</i>) : Class(<i>var</i>, 0)</code></td>
246 <td>Allow overloaded constructors to use common initialization code</td> 278 <td>Allow overloaded constructors to use common initialization code</td>
247 <td><a href="https://www.ibm.com/developerworks/community/blogs/5894415f-be62-4b c0-81c5-3956e82276f3/entry/introduction_to_the_c_11_feature_delegating_construct ors?lang=en"> 279 <td><a href="https://www.ibm.com/developerworks/community/blogs/5894415f-be62-4b c0-81c5-3956e82276f3/entry/introduction_to_the_c_11_feature_delegating_construct ors?lang=en">
248 Introduction to the C++11 feature: delegating constructors</a></td> 280 Introduction to the C++11 feature: delegating constructors</a></td>
249 <td></td> 281 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /0zVA8Ctx3Xo">Discussion thread</a></td>
250 </tr> 282 </tr>
251 283
252 <tr> 284 <tr>
253 <td>Enumerated Type Classes</td> 285 <td>Enumerated Type Classes</td>
254 <td><code>enum class <i>classname</i></code></td> 286 <td><code>enum class <i>classname</i></code></td>
255 <td>Provide enums as full classes, with no implicit 287 <td>Provide enums as full classes, with no implicit
256 conversion to booleans or integers</td> 288 conversion to booleans or integers</td>
257 <td><a href="http://stackoverflow.com/questions/6936030/do-we-really-need-enum-c lass-in-c11"> 289 <td><a href="http://stackoverflow.com/questions/6936030/do-we-really-need-enum-c lass-in-c11">
258 enum-class</a></td> 290 enum-class</a></td>
259 <td></td> 291 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /Q5WmkAImanc">Discussion thread</a></td>
260 </tr> 292 </tr>
261 293
262 <tr> 294 <tr>
263 <td>Exception Features</td> 295 <td>Exception Features</td>
264 <td><code>noexcept</code>, <code>exception_ptr</code>, 296 <td><code>noexcept</code>, <code>exception_ptr</code>,
265 <code>current_exception()</code>, <code>rethrow_exception</code>, 297 <code>current_exception()</code>, <code>rethrow_exception</code>,
266 and <code>nested_exception</code></td> 298 and <code>nested_exception</code></td>
267 <td>Enhancements to exception throwing and handling</td> 299 <td>Enhancements to exception throwing and handling</td>
268 <td><a href="http://en.cppreference.com/w/cpp/error/exception"> 300 <td><a href="http://en.cppreference.com/w/cpp/error/exception">
269 std::exception</a></td> 301 std::exception</a></td>
270 <td>Exceptions are banned by the 302 <td>Exceptions are banned by the
271 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Except ions"> 303 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Except ions"> C++ Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/fo rum/#!topic/chromium-dev/8i4tMqNpHhg">Discussion thread</a></td>
272 C++ Style Guide</a>.</td>
273 </tr> 304 </tr>
274 305
275 <tr> 306 <tr>
276 <td>Explicit Conversion Operators</td> 307 <td>Explicit Conversion Operators</td>
277 <td><code>explicit operator <i>type</i>() { 308 <td><code>explicit operator <i>type</i>() {
278 <br />&nbsp;&nbsp;// code<br /> }</code></td> 309 <br />&nbsp;&nbsp;// code<br /> }</code></td>
279 <td>Allows conversion operators that cannot be implicitly invoked</td> 310 <td>Allows conversion operators that cannot be implicitly invoked</td>
280 <td><a href="http://en.cppreference.com/w/cpp/language/explicit"> 311 <td><a href="http://en.cppreference.com/w/cpp/language/explicit">
281 explicit specifier</a></td> 312 explicit specifier</a></td>
282 <td></td> 313 <td></td>
283 </tr> 314 </tr>
284 315
285 <tr> 316 <tr>
286 <td>Function Local Variable</td>
287 <td><code>__func__</code></td>
288 <td>Provides a local variable of the name of the enclosing
289 function for logging purposes</td>
290 <td><a href="http://www.informit.com/guides/content.aspx?g=cplusplus&amp;seqNum= 338">
291 The __func__ Predeclared Identifier is Coming to C++</a></td>
292 <td></td>
293 </tr>
294
295 <tr>
296 <td>Function Suppression</td> 317 <td>Function Suppression</td>
297 <td><code><i>Function</i>(<i>arguments</i>) = delete;</code></td> 318 <td><code><i>Function</i>(<i>arguments</i>) = delete;</code></td>
298 <td>Suppresses the implementation of a function, especially a 319 <td>Suppresses the implementation of a function, especially a
299 synthetic function such as a copy constructor</td> 320 synthetic function such as a copy constructor</td>
300 <td>TODO: documentation link</td> 321 <td>TODO: documentation link</td>
301 <td></td> 322 <td></td>
302 </tr> 323 </tr>
303 324
304 <tr> 325 <tr>
305 <td>(Uniform) Initialization Syntax</td> 326 <td>(Uniform) Initialization Syntax</td>
306 <td><code><i>type</i> <i>name</i> { [<i>value</i> ..., <i>value</i>]};</code></t d> 327 <td><code><i>type</i> <i>name</i> { [<i>value</i> ..., <i>value</i>]};</code></t d>
307 <td>Allows any object of primitive, aggregate or class 328 <td>Allows any object of primitive, aggregate or class
308 type to be initialized using brace syntax</td> 329 type to be initialized using brace syntax</td>
309 <td>TODO: documentation link</td> 330 <td>TODO: documentation link</td>
310 <td></td> 331 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /GF96FshwHLw">Discussion thread</a></td>
311 </tr> 332 </tr>
312 333
313 <tr> 334 <tr>
314 <td>Inline Namespaces</td> 335 <td>Inline Namespaces</td>
315 <td><code>inline</code></td> 336 <td><code>inline</code></td>
316 <td>Allows better versioning of namespaces</td> 337 <td>Allows better versioning of namespaces</td>
317 <td><a href="http://en.cppreference.com/w/cpp/language/namespace">Namespaces</a> </td> 338 <td><a href="http://en.cppreference.com/w/cpp/language/namespace">Namespaces</a> </td>
318 <td>Under investigation, unclear how it will work with 339 <td>Under investigation, unclear how it will work with
319 components</td> 340 components</td>
320 </tr> 341 </tr>
321 342
322 <tr> 343 <tr>
323 <td>Lambda Expressions</td> 344 <td>Lambda Expressions</td>
324 <td><code>[<i>captures</i>](<i>params</i>) -&gt; <i>ret</i> { <i>body</i> }</cod e></td> 345 <td><code>[<i>captures</i>](<i>params</i>) -&gt; <i>ret</i> { <i>body</i> }</cod e></td>
325 <td>Anonymous functions</td> 346 <td>Anonymous functions</td>
326 <td><a href="http://en.cppreference.com/w/cpp/language/lambda">Lambda functions< /a></td> 347 <td><a href="http://en.cppreference.com/w/cpp/language/lambda">Lambda functions< /a></td>
327 <td>No default captures (<a href="https://google-styleguide.googlecode.com/svn/t runk/cppguide.html#Lambda_expressions">Google Style Guide</a>).</td> 348 <td>No default captures (<a href="https://google-styleguide.googlecode.com/svn/t runk/cppguide.html#Lambda_expressions">Google Style Guide</a>). <a href="https:/ /groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/D9UnnxBnciQ">Discus sion thread</a></td>
328 </tr> 349 </tr>
329 350
330 <tr> 351 <tr>
331 <td><code>long long</code> Type</td> 352 <td><code>long long</code> Type</td>
332 <td><code>long long <i>var</i>= <i>value</i>;</code></td> 353 <td><code>long long <i>var</i>= <i>value</i>;</code></td>
333 <td>An integer of at least 64 bits</td> 354 <td>An integer of at least 64 bits</td>
334 <td><a href="http://en.cppreference.com/w/cpp/language/types"> 355 <td><a href="http://en.cppreference.com/w/cpp/language/types">
335 Fundamental types</a></td> 356 Fundamental types</a></td>
336 <td></td> 357 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /RxugZ-pIDxk">Discussion thread</a></td>
337 </tr> 358 </tr>
338 359
339 <tr> 360 <tr>
340 <td>Non-Static Class Member Initializers</td> 361 <td>Non-Static Class Member Initializers</td>
341 <td> 362 <td>
342 <code> 363 <code>
343 class C {<br /> 364 class C {<br />
344 <i>type</i> <i>var</i> = <i>value</i>;<br/> 365 <i>type</i> <i>var</i> = <i>value</i>;<br/>
345 C() // copy-initializes <i>var</i><br/> 366 C() // copy-initializes <i>var</i><br/>
346 </code> 367 </code>
347 <td>Allows non-static class members to be initialized at their definitions (outs ide constructors)</td> 368 <td>Allows non-static class members to be initialized at their definitions (outs ide constructors)</td>
348 <td><a href="http://en.cppreference.com/w/cpp/language/data_members"> 369 <td><a href="http://en.cppreference.com/w/cpp/language/data_members">
349 Non-static data members</a></td> 370 Non-static data members</a></td>
350 <td></td> 371 <td></td>
351 </tr> 372 </tr>
352 373
353 <tr> 374 <tr>
354 <td>Range-Based For Loops</td> 375 <td>Range-Based For Loops</td>
355 <td><code>for (<i>type</i> <i>var</i> : <i>range</i>)</code></td> 376 <td><code>for (<i>type</i> <i>var</i> : <i>range</i>)</code></td>
356 <td>Facilitates a more concise syntax for iterating over the elements 377 <td>Facilitates a more concise syntax for iterating over the elements
357 of a container (or a range of iterators) in a <code>for</code> loop</td> 378 of a container (or a range of iterators) in a <code>for</code> loop</td>
358 <td>TODO: documentation link</td> 379 <td>TODO: documentation link</td>
359 <td></td> 380 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /hpzz4EqbVmc">Discussion thread</a></td>
360 </tr> 381 </tr>
361 382
362 <tr> 383 <tr>
363 <td>Raw String Literals</td> 384 <td>Raw String Literals</td>
364 <td><code>string <i>var</i>=R&quot;(<i>raw_string</i>)&quot;;</code></td> 385 <td><code>string <i>var</i>=R&quot;(<i>raw_string</i>)&quot;;</code></td>
365 <td>Allows a string to be encoded without any escape 386 <td>Allows a string to be encoded without any escape
366 sequences, easing parsing in regex expressions, for example</td> 387 sequences, easing parsing in regex expressions, for example</td>
367 <td>TODO: documentation link</td> 388 <td>TODO: documentation link</td>
368 <td></td> 389 <td></td>
369 </tr> 390 </tr>
370 391
371 <tr> 392 <tr>
372 <td>Rvalue References (and Move Semantics)</td> 393 <td>Rvalue References (and Move Semantics)</td>
373 <td><code>T(T&amp;&amp; t)</code> and <code>T&amp; operator=(T&amp;&amp; t)</cod e></td> 394 <td><code>T(T&amp;&amp; t)</code> and <code>T&amp; operator=(T&amp;&amp; t)</cod e></td>
374 <td>Reference that only binds to a temporary object</td> 395 <td>Reference that only binds to a temporary object</td>
375 <td>TODO: documentation link</td> 396 <td>TODO: documentation link</td>
376 <td></td> 397 <td></td>
377 </tr> 398 </tr>
378 399
379 <tr> 400 <tr>
380 <td>Static Assertions</td> 401 <td>Static Assertions</td>
381 <td><code>static_assert(<i>bool</i>, <i>string</i>)</code></td> 402 <td><code>static_assert(<i>bool</i>, <i>string</i>)</code></td>
382 <td>Tests compile-time conditions</td> 403 <td>Tests compile-time conditions</td>
383 <td><a href="http://en.cppreference.com/w/cpp/language/static_assert">Static Ass ertion</a></td> 404 <td><a href="http://en.cppreference.com/w/cpp/language/static_assert">Static Ass ertion</a></td>
384 <td></td> 405 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /POISBQEhGzU">Discussion thread</a></td>
385 </tr> 406 </tr>
386 407
387 <tr> 408 <tr>
388 <td>Union Class Members</td> 409 <td>Union Class Members</td>
389 <td><code>union <i>name</i> { <i>class</i> <i>var</i>}</code></td> 410 <td><code>union <i>name</i> { <i>class</i> <i>var</i>}</code></td>
390 <td>Allows class type members</td> 411 <td>Allows class type members</td>
391 <td><a href="http://en.cppreference.com/w/cpp/language/union"> 412 <td><a href="http://en.cppreference.com/w/cpp/language/union">
392 Union declarations</a></td> 413 Union declarations</a></td>
393 <td></td> 414 <td></td>
394 </tr> 415 </tr>
395 416
396 <tr> 417 <tr>
397 <td>User-Defined Literals</td> 418 <td>User-Defined Literals</td>
398 <td><code><i>type</i> <i>var</i> = <i>literal_value</i>_<i>type</i></code></td> 419 <td><code><i>type</i> <i>var</i> = <i>literal_value</i>_<i>type</i></code></td>
399 <td>Allows user-defined literal expressions</td> 420 <td>Allows user-defined literal expressions</td>
400 <td>TODO: documentation link</td> 421 <td>TODO: documentation link</td>
401 <td></td> 422 <td></td>
402 </tr> 423 </tr>
403 424
404 <tr> 425 <tr>
405 <td>UTF-8 String Literals</td>
406 <td><code>u8&quot;<i>string</i>&quot;</code></td>
407 <td>Enforces UTF-8 encoding on all string literals</td>
408 <td><a href="http://en.cppreference.com/w/cpp/language/string_literal">
409 string literal</a></td>
410 <td></td>
411 </tr>
412
413 <tr>
414 <td>UTF-16 and UTF-32 Support (16-Bit and 32-Bit Character Types)</td>
415 <td><code>char16_t</code> and <code>char32_t</code></td>
416 <td>Provides character types for handling 16-bit
417 and 32-bit code units (useful for encoding
418 UTF-16 and UTF-32 string data)</td>
419 <td><a href="http://en.cppreference.com/w/cpp/language/types">
420 Fundamental types</a></td>
421 <td>Non-UTF-8 text is banned by the
422 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Non-AS CII_Characters">
423 C++ Style Guide</a>. However, may be useful for
424 consuming non-ASCII data.</td>
425 </tr>
426
427
428 <tr>
429 <td>Variadic Macros</td> 426 <td>Variadic Macros</td>
430 <td><code>#define <i>MACRO</i>(...) <i>Impl</i>(<i>args</i>, __VA_ARGS__)</code> </td> 427 <td><code>#define <i>MACRO</i>(...) <i>Impl</i>(<i>args</i>, __VA_ARGS__)</code> </td>
431 <td>Allows macros that accept a variable number of arguments</td> 428 <td>Allows macros that accept a variable number of arguments</td>
432 <td><a href="http://stackoverflow.com/questions/4786649/are-variadic-macros-nons tandard"> 429 <td><a href="http://stackoverflow.com/questions/4786649/are-variadic-macros-nons tandard">
433 Are Variadic macros nonstandard?</a></td> 430 Are Variadic macros nonstandard?</a></td>
434 <td></td> 431 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /sRx9j3CQqyA">Discussion thread</a></td>
435 </tr> 432 </tr>
436 433
437 <tr> 434 <tr>
438 <td>Variadic Templates</td> 435 <td>Variadic Templates</td>
439 <td><code>template &lt;<i>typename</i> ... <i>arg</i>&gt;</code></td> 436 <td><code>template &lt;<i>typename</i> ... <i>arg</i>&gt;</code></td>
440 <td>Allows templates that accept a variable number of arguments</td> 437 <td>Allows templates that accept a variable number of arguments</td>
441 <td>TODO: documentation link</td> 438 <td>TODO: documentation link</td>
442 <td></td> 439 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /6ItymeMXpMc">Discussion thread</a></td>
443 </tr> 440 </tr>
444 441
445 </tbody> 442 </tbody>
446 </table> 443 </table>
447 444
448 <h3 id="blacklist_stdlib">C++11 Standard Library features</h3> 445 <h3 id="blacklist_stdlib">C++11 Standard Library features</h3>
449 446
450 <details> 447 <details>
451 448
452 <p><summary class="note">All C++11 <strong>Standard Library features are current ly 449 <p><summary class="note">All C++11 <strong>Standard Library features are current ly
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 <td><a href="http://en.cppreference.com/w/cpp/error/system_error">std::system_er ror</a></td> 819 <td><a href="http://en.cppreference.com/w/cpp/error/system_error">std::system_er ror</a></td>
823 <td></td> 820 <td></td>
824 </tr> 821 </tr>
825 822
826 <tr> 823 <tr>
827 <td>Trailing Return Types</td> 824 <td>Trailing Return Types</td>
828 <td><code>auto <i>function declaration</i> -> <i>return_type</i></code></td> 825 <td><code>auto <i>function declaration</i> -> <i>return_type</i></code></td>
829 <td>Allows trailing function return value syntax</td> 826 <td>Allows trailing function return value syntax</td>
830 <td><a href="http://en.cppreference.com/w/cpp/language/function"> 827 <td><a href="http://en.cppreference.com/w/cpp/language/function">
831 Declaring functions</a></td> 828 Declaring functions</a></td>
832 <td></td> 829 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /OQyYSfH9m2M">Discussion thread</a></td>
833 </tr> 830 </tr>
834 831
835 <tr> 832 <tr>
836 <td>Thread Library</td> 833 <td>Thread Library</td>
837 <td><code>&lt;thread&gt; support, including &lt;future&gt;, 834 <td><code>&lt;thread&gt; support, including &lt;future&gt;,
838 &lt;mutex&gt;, &lt;condition_variable&gt;</code></td> 835 &lt;mutex&gt;, &lt;condition_variable&gt;</code></td>
839 <td>Provides a standard mulitthreading library using <code>std::thread</code> an d associates</td> 836 <td>Provides a standard mulitthreading library using <code>std::thread</code> an d associates</td>
840 <td><a href="http://en.cppreference.com/w/cpp/thread">Thread support library</a> </td> 837 <td><a href="http://en.cppreference.com/w/cpp/thread">Thread support library</a> </td>
841 <td></td> 838 <td></td>
842 </tr> 839 </tr>
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 </tr> 942 </tr>
946 943
947 </tbody> 944 </tbody>
948 </table> 945 </table>
949 946
950 </details> 947 </details>
951 948
952 </div> 949 </div>
953 </body> 950 </body>
954 </html> 951 </html>
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698