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

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

Issue 685663002: Update C++11 feature page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 <td>Automatic Types</td> 77 <td>Automatic Types</td>
78 <td><code>auto</code></td> 78 <td><code>auto</code></td>
79 <td>Automatic type deduction</td> 79 <td>Automatic type deduction</td>
80 <td>TODO: documentation link</td> 80 <td>TODO: documentation link</td>
81 <td>Use according to the <a 81 <td>Use according to the <a
82 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#auto">Goo gle 82 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#auto">Goo gle
83 Style Guide on <code>auto</code></a>. <a href="https://groups.google.com/a/chrom ium.org/forum/#!topic/chromium-dev/OQyYSfH9m2M">Discussion thread</a></td> 83 Style Guide on <code>auto</code></a>. <a href="https://groups.google.com/a/chrom ium.org/forum/#!topic/chromium-dev/OQyYSfH9m2M">Discussion thread</a></td>
84 </tr> 84 </tr>
85 85
86 <tr> 86 <tr>
87 <td>Declared Type Accessor</td>
88 <td><code>decltype(<i>expression</i>)</code></td>
89 <td>Provides a means to determine the type of an expression at compile-time,
90 useful most often in templates.</td>
91 <td><a href="http://en.cppreference.com/w/cpp/language/decltype">
92 decltype specifier</a></td>
93 <td>Usage should be rare. <a href="https://groups.google.com/a/chromium.org/foru m/#!topic/chromium-dev/_zoNvZd_dSo">Discussion thread</a></td>
94 </tr>
95
96 <tr>
87 <td>Enumerated Type Classes</td> 97 <td>Enumerated Type Classes</td>
88 <td><code>enum class <i>classname</i></code></td> 98 <td><code>enum class <i>classname</i></code></td>
89 <td>Provide enums as full classes, with no implicit 99 <td>Provide enums as full classes, with no implicit
90 conversion to booleans or integers</td> 100 conversion to booleans or integers</td>
91 <td><a href="http://stackoverflow.com/questions/6936030/do-we-really-need-enum-c lass-in-c11"> 101 <td><a href="http://stackoverflow.com/questions/6936030/do-we-really-need-enum-c lass-in-c11">
92 enum-class</a></td> 102 enum-class</a></td>
93 <td>Enum classes are still enums and follow enum naming rules 103 <td>Enum classes are still enums and follow enum naming rules
94 (which means SHOUTY_CASE in the <a href="http://www.chromium.org/developers/codi ng-style#Naming">current style guide</a>). 104 (which means SHOUTY_CASE in the <a href="http://www.chromium.org/developers/codi ng-style#Naming">current style guide</a>).
95 <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/Q5W mkAImanc">Discussion thread</a></td> 105 <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/Q5W mkAImanc">Discussion thread</a></td>
96 </tr> 106 </tr>
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 <td>Function Local Variable</td> 234 <td>Function Local Variable</td>
225 <td><code>__func__</code></td> 235 <td><code>__func__</code></td>
226 <td>Provides a local variable of the name of the enclosing 236 <td>Provides a local variable of the name of the enclosing
227 function for logging purposes</td> 237 function for logging purposes</td>
228 <td><a href="http://www.informit.com/guides/content.aspx?g=cplusplus&amp;seqNum= 338"> 238 <td><a href="http://www.informit.com/guides/content.aspx?g=cplusplus&amp;seqNum= 338">
229 The __func__ Predeclared Identifier is Coming to C++</a></td> 239 The __func__ Predeclared Identifier is Coming to C++</a></td>
230 <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> 240 <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>
231 </tr> 241 </tr>
232 242
233 <tr> 243 <tr>
244 <td><code>long long</code> Type</td>
245 <td><code>long long <i>var</i>= <i>value</i>;</code></td>
246 <td>An integer of at least 64 bits</td>
247 <td><a href="http://en.cppreference.com/w/cpp/language/types">
248 Fundamental types</a></td>
249 <td>Use an stdint.h type if you need a 64bit number. <a href="https://groups.goo gle.com/a/chromium.org/forum/#!topic/chromium-dev/RxugZ-pIDxk">Discussion thread </a></td>
250 </tr>
251
252 <tr>
253 <td>Raw String Literals</td>
254 <td><code>string <i>var</i>=R&quot;(<i>raw_string</i>)&quot;;</code></td>
255 <td>Allows a string to be encoded without any escape
256 sequences, easing parsing in regex expressions, for example</td>
257 <td>TODO: documentation link</td>
258 <td>Causes incorrect line numbers in MSVS2014 and gcc. Reevaluate once that work s. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/ 2kWQHbbuMHI">Discussion thread</a></td>
259 </tr>
260
261 <tr>
234 <td>Rvalue References (and Move Semantics)</td> 262 <td>Rvalue References (and Move Semantics)</td>
235 <td><code>T(T&amp;&amp; t)</code> and <code>T&amp; operator=(T&amp;&amp; t)</cod e></td> 263 <td><code>T(T&amp;&amp; t)</code> and <code>T&amp; operator=(T&amp;&amp; t)</cod e></td>
236 <td>Reference that only binds to a temporary object</td> 264 <td>Reference that only binds to a temporary object</td>
237 <td>TODO: documentation link</td> 265 <td>TODO: documentation link</td>
238 <td>To be revisited in the future. Allowed in exceptional cases where approved by the OWNERS of src/styleguide/c++/.</td> 266 <td>To be revisited in the future. Allowed in exceptional cases where approved by the OWNERS of src/styleguide/c++/.</td>
239 </tr> 267 </tr>
240 268
241 <tr> 269 <tr>
270 <td>(Uniform) Initialization Syntax</td>
271 <td><code><i>type</i> <i>name</i> { [<i>value</i> ..., <i>value</i>]};</code></t d>
272 <td>Allows any object of primitive, aggregate or class
273 type to be initialized using brace syntax</td>
274 <td>TODO: documentation link</td>
275 <td>Dangerous without library support, see thread. Reevaulate once we have C++11 library support. <a href="https://groups.google.com/a/chromium.org/forum/#!topi c/chromium-dev/GF96FshwHLw">Discussion thread</a></td>
276 </tr>
277
278 <tr>
242 <td>UTF-16 and UTF-32 Support (16-Bit and 32-Bit Character Types)</td> 279 <td>UTF-16 and UTF-32 Support (16-Bit and 32-Bit Character Types)</td>
243 <td><code>char16_t</code> and <code>char32_t</code></td> 280 <td><code>char16_t</code> and <code>char32_t</code></td>
244 <td>Provides character types for handling 16-bit 281 <td>Provides character types for handling 16-bit
245 and 32-bit code units (useful for encoding 282 and 32-bit code units (useful for encoding
246 UTF-16 and UTF-32 string data)</td> 283 UTF-16 and UTF-32 string data)</td>
247 <td><a href="http://en.cppreference.com/w/cpp/language/types"> 284 <td><a href="http://en.cppreference.com/w/cpp/language/types">
248 Fundamental types</a></td> 285 Fundamental types</a></td>
249 <td>Doesn't work in MSVS2013. Reevaluate once it does. Non-UTF-8 text is 286 <td>Doesn't work in MSVS2013. Reevaluate once it does. Non-UTF-8 text is
250 banned by the 287 banned by the
251 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Non-AS CII_Characters"> 288 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Non-AS CII_Characters">
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 <td>Attributes</td> 336 <td>Attributes</td>
300 <td><code>[[<i>attribute_name</i>]]</code></td> 337 <td><code>[[<i>attribute_name</i>]]</code></td>
301 <td>Attaches properties to declarations that 338 <td>Attaches properties to declarations that
302 specific compiler implementations may use.</td> 339 specific compiler implementations may use.</td>
303 <td><a href="http://www.codesynthesis.com/~boris/blog/2012/04/18/cxx11-generaliz ed-attributes/"> 340 <td><a href="http://www.codesynthesis.com/~boris/blog/2012/04/18/cxx11-generaliz ed-attributes/">
304 C++11 generalized attributes</a></td> 341 C++11 generalized attributes</a></td>
305 <td></td> 342 <td></td>
306 </tr> 343 </tr>
307 344
308 <tr> 345 <tr>
309 <td>Declared Type Accessor</td>
310 <td><code>decltype(<i>expression</i>)</code></td>
311 <td>Provides a means to determine the type of an expression at compile-time,
312 useful most often in templates.</td>
313 <td><a href="http://en.cppreference.com/w/cpp/language/decltype">
314 decltype specifier</a></td>
315 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /_zoNvZd_dSo">Discussion thread</a></td>
316 </tr>
317
318 <tr>
319 <td>Default Function Creation</td> 346 <td>Default Function Creation</td>
320 <td><code><i>Function</i>(<i>arguments</i>) = default;</code></td> 347 <td><code><i>Function</i>(<i>arguments</i>) = default;</code></td>
321 <td>Instructs the compiler to generate a default version 348 <td>Instructs the compiler to generate a default version
322 of the indicated function</td> 349 of the indicated function</td>
323 <td><a href="http://stackoverflow.com/questions/823935/whats-the-point-in-defaul ting-functions-in-c11"> 350 <td><a href="http://stackoverflow.com/questions/823935/whats-the-point-in-defaul ting-functions-in-c11">
324 What's the point in defaulting functions in C++11?</a></td> 351 What's the point in defaulting functions in C++11?</a></td>
325 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /qgU4mh_MpGA">Discussion thread</a></td> 352 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /qgU4mh_MpGA">Discussion thread</a></td>
326 </tr> 353 </tr>
327 354
328 <tr> 355 <tr>
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 <tr> 387 <tr>
361 <td>Function Suppression</td> 388 <td>Function Suppression</td>
362 <td><code><i>Function</i>(<i>arguments</i>) = delete;</code></td> 389 <td><code><i>Function</i>(<i>arguments</i>) = delete;</code></td>
363 <td>Suppresses the implementation of a function, especially a 390 <td>Suppresses the implementation of a function, especially a
364 synthetic function such as a copy constructor</td> 391 synthetic function such as a copy constructor</td>
365 <td>TODO: documentation link</td> 392 <td>TODO: documentation link</td>
366 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /i1o7-RNRnMs">Discussion thread</a></td> 393 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /i1o7-RNRnMs">Discussion thread</a></td>
367 </tr> 394 </tr>
368 395
369 <tr> 396 <tr>
370 <td>(Uniform) Initialization Syntax</td>
371 <td><code><i>type</i> <i>name</i> { [<i>value</i> ..., <i>value</i>]};</code></t d>
372 <td>Allows any object of primitive, aggregate or class
373 type to be initialized using brace syntax</td>
374 <td>TODO: documentation link</td>
375 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /GF96FshwHLw">Discussion thread</a></td>
376 </tr>
377
378 <tr>
379 <td>Inline Namespaces</td> 397 <td>Inline Namespaces</td>
380 <td><code>inline</code></td> 398 <td><code>inline</code></td>
381 <td>Allows better versioning of namespaces</td> 399 <td>Allows better versioning of namespaces</td>
382 <td><a href="http://en.cppreference.com/w/cpp/language/namespace">Namespaces</a> </td> 400 <td><a href="http://en.cppreference.com/w/cpp/language/namespace">Namespaces</a> </td>
383 <td>Unclear how it will work with components</td> 401 <td>Unclear how it will work with components</td>
384 </tr> 402 </tr>
385 403
386 <tr> 404 <tr>
387 <td>Lambda Expressions</td> 405 <td>Lambda Expressions</td>
388 <td><code>[<i>captures</i>](<i>params</i>) -&gt; <i>ret</i> { <i>body</i> }</cod e></td> 406 <td><code>[<i>captures</i>](<i>params</i>) -&gt; <i>ret</i> { <i>body</i> }</cod e></td>
389 <td>Anonymous functions</td> 407 <td>Anonymous functions</td>
390 <td><a href="http://en.cppreference.com/w/cpp/language/lambda">Lambda functions< /a></td> 408 <td><a href="http://en.cppreference.com/w/cpp/language/lambda">Lambda functions< /a></td>
391 <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> 409 <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>
392 </tr> 410 </tr>
393 411
394 <tr> 412 <tr>
395 <td><code>long long</code> Type</td>
396 <td><code>long long <i>var</i>= <i>value</i>;</code></td>
397 <td>An integer of at least 64 bits</td>
398 <td><a href="http://en.cppreference.com/w/cpp/language/types">
399 Fundamental types</a></td>
400 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /RxugZ-pIDxk">Discussion thread</a></td>
401 </tr>
402
403 <tr>
404 <td>Non-Static Class Member Initializers</td> 413 <td>Non-Static Class Member Initializers</td>
405 <td> 414 <td>
406 <code> 415 <code>
407 class C {<br /> 416 class C {<br />
408 <i>type</i> <i>var</i> = <i>value</i>;<br/> 417 <i>type</i> <i>var</i> = <i>value</i>;<br/>
409 C() // copy-initializes <i>var</i><br/> 418 C() // copy-initializes <i>var</i><br/>
410 </code> 419 </code>
411 <td>Allows non-static class members to be initialized at their definitions (outs ide constructors)</td> 420 <td>Allows non-static class members to be initialized at their definitions (outs ide constructors)</td>
412 <td><a href="http://en.cppreference.com/w/cpp/language/data_members"> 421 <td><a href="http://en.cppreference.com/w/cpp/language/data_members">
413 Non-static data members</a></td> 422 Non-static data members</a></td>
414 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /zqB-DySA4V0">Discussion thread</a></td> 423 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /zqB-DySA4V0">Discussion thread</a></td>
415 </tr> 424 </tr>
416 425
417 <tr> 426 <tr>
418 <td>Raw String Literals</td>
419 <td><code>string <i>var</i>=R&quot;(<i>raw_string</i>)&quot;;</code></td>
420 <td>Allows a string to be encoded without any escape
421 sequences, easing parsing in regex expressions, for example</td>
422 <td>TODO: documentation link</td>
423 <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev /2kWQHbbuMHI">Discussion thread</a></td>
424 </tr>
425
426 <tr>
427 <td>Union Class Members</td> 427 <td>Union Class Members</td>
428 <td><code>union <i>name</i> { <i>class</i> <i>var</i>}</code></td> 428 <td><code>union <i>name</i> { <i>class</i> <i>var</i>}</code></td>
429 <td>Allows class type members</td> 429 <td>Allows class type members</td>
430 <td><a href="http://en.cppreference.com/w/cpp/language/union"> 430 <td><a href="http://en.cppreference.com/w/cpp/language/union">
431 Union declarations</a></td> 431 Union declarations</a></td>
432 <td></td> 432 <td></td>
433 </tr> 433 </tr>
434 434
435 <tr> 435 <tr>
436 <td>User-Defined Literals</td> 436 <td>User-Defined Literals</td>
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 </tr> 943 </tr>
944 944
945 </tbody> 945 </tbody>
946 </table> 946 </table>
947 947
948 </details> 948 </details>
949 949
950 </div> 950 </div>
951 </body> 951 </body>
952 </html> 952 </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