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

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

Issue 1296373002: c++11: Fill in several documentation link TODOs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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 <title>C++11 use in Chromium</title> 10 <title>C++11 use in Chromium</title>
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 <td>More intuitive parsing of template parameters</td> 71 <td>More intuitive parsing of template parameters</td>
72 <td><a href="http://stackoverflow.com/questions/15785496/c-templates-angle-brack ets-pitfall-what-is-the-c11-fix"> 72 <td><a href="http://stackoverflow.com/questions/15785496/c-templates-angle-brack ets-pitfall-what-is-the-c11-fix">
73 C++ Templates Angle Brackets Pitfall</a></td> 73 C++ Templates Angle Brackets Pitfall</a></td>
74 <td>Recommended to increase readability. Approved without discussion.</td> 74 <td>Recommended to increase readability. Approved without discussion.</td>
75 </tr> 75 </tr>
76 76
77 <tr> 77 <tr>
78 <td>Automatic Types</td> 78 <td>Automatic Types</td>
79 <td><code>auto</code></td> 79 <td><code>auto</code></td>
80 <td>Automatic type deduction</td> 80 <td>Automatic type deduction</td>
81 <td>TODO: documentation link</td> 81 <td><a href="http://en.cppreference.com/w/cpp/language/auto">
82 auto specifier</a></td>
82 <td>Use according to the <a 83 <td>Use according to the <a
83 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#auto">Goo gle 84 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#auto">Goo gle
84 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>. <a href=" https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/5-Bt3BJzAo0" >Another discussion thread</a>.</td> 85 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>. <a href=" https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/5-Bt3BJzAo0" >Another discussion thread</a>.</td>
85 </tr> 86 </tr>
86 87
87 <tr> 88 <tr>
88 <td>Declared Type Accessor</td> 89 <td>Declared Type Accessor</td>
89 <td><code>decltype(<i>expression</i>)</code></td> 90 <td><code>decltype(<i>expression</i>)</code></td>
90 <td>Provides a means to determine the type of an expression at compile-time, 91 <td>Provides a means to determine the type of an expression at compile-time,
91 useful most often in templates.</td> 92 useful most often in templates.</td>
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 <td><a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#In itialization">Google 187 <td><a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#In itialization">Google
187 Style Guide</a>. 188 Style Guide</a>.
188 <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/zqB -DySA4V0">Discussion thread</a> 189 <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/zqB -DySA4V0">Discussion thread</a>
189 </td> 190 </td>
190 </tr> 191 </tr>
191 192
192 <tr> 193 <tr>
193 <td>Null Pointer Constant</td> 194 <td>Null Pointer Constant</td>
194 <td><code>nullptr</code></td> 195 <td><code>nullptr</code></td>
195 <td>Declares a type-safe null pointer</td> 196 <td>Declares a type-safe null pointer</td>
196 <td>TODO: documentation link</td> 197 <td><a href="http://en.cppreference.com/w/cpp/language/nullptr">
198 nullptr</a></td>
197 <td>Recommended for new code. 199 <td>Recommended for new code.
198 <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/4mi jeJHzxLg">Discussion thread</a>. 200 <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/4mi jeJHzxLg">Discussion thread</a>.
199 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#0_and_ nullptr/NULL">Google Style Guide</a>. 201 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#0_and_ nullptr/NULL">Google Style Guide</a>.
200 Note: <code>std::nullptr_t</code> is a library feature and not available. 202 Note: <code>std::nullptr_t</code> is a library feature and not available.
201 </td> 203 </td>
202 </tr> 204 </tr>
203 205
204 <tr> 206 <tr>
205 <td>Override Specifier</td> 207 <td>Override Specifier</td>
206 <td><code>override</code></td> 208 <td><code>override</code></td>
207 <td>Indicates that a class or function overrides a base implementation</td> 209 <td>Indicates that a class or function overrides a base implementation</td>
208 <td><a href="http://en.cppreference.com/w/cpp/language/override">override Langua ge Reference</a></td> 210 <td><a href="http://en.cppreference.com/w/cpp/language/override">override Langua ge Reference</a></td>
209 <td>Recommended for new code. Existing uses of the <code>OVERRIDE</code> macro w ill 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/VTN ZzizN0zo">Discussion</a></td> 211 <td>Recommended for new code. Existing uses of the <code>OVERRIDE</code> macro w ill 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/VTN ZzizN0zo">Discussion</a></td>
210 </tr> 212 </tr>
211 213
212 <tr> 214 <tr>
213 <td>Range-Based For Loops</td> 215 <td>Range-Based For Loops</td>
214 <td><code>for (<i>type</i> <i>var</i> : <i>range</i>)</code></td> 216 <td><code>for (<i>type</i> <i>var</i> : <i>range</i>)</code></td>
215 <td>Facilitates a more concise syntax for iterating over the elements 217 <td>Facilitates a more concise syntax for iterating over the elements
216 of a container (or a range of iterators) in a <code>for</code> loop</td> 218 of a container (or a range of iterators) in a <code>for</code> loop</td>
217 <td>TODO: documentation link</td> 219 <td><a href="http://en.cppreference.com/w/cpp/language/range-for">
220 Range-based for loop</a></td>
218 <td>As a rule of thumb, use <code>for (const auto& ...)</code>, <code>for (auto& ...)</code>, or <code>for (<i>concrete type</i> ...)</code>. For pointers, use <code>for (auto* ...)</code> to make clear that the copy of the loop variable is intended, and only a pointer is copied. <a href="https://groups.google.com/a/ch romium.org/forum/#!topic/chromium-dev/hpzz4EqbVmc">Discussion thread</a></td> 221 <td>As a rule of thumb, use <code>for (const auto& ...)</code>, <code>for (auto& ...)</code>, or <code>for (<i>concrete type</i> ...)</code>. For pointers, use <code>for (auto* ...)</code> to make clear that the copy of the loop variable is intended, and only a pointer is copied. <a href="https://groups.google.com/a/ch romium.org/forum/#!topic/chromium-dev/hpzz4EqbVmc">Discussion thread</a></td>
219 </tr> 222 </tr>
220 223
221 <tr> 224 <tr>
222 <td>Standard Integers</td> 225 <td>Standard Integers</td>
223 <td>Typedefs within <code>&lt;stdint.h&gt;</code> 226 <td>Typedefs within <code>&lt;stdint.h&gt;</code>
224 and <code>&lt;inttypes&gt;</code></td> 227 and <code>&lt;inttypes&gt;</code></td>
225 <td>Provides fixed-size integers independent of platforms</td> 228 <td>Provides fixed-size integers independent of platforms</td>
226 <td><a href="http://www.cplusplus.com/reference/cstdint/"> 229 <td><a href="http://www.cplusplus.com/reference/cstdint/">
227 &lt;stdint.h&gt; (cstdint)</a></td> 230 &lt;stdint.h&gt; (cstdint)</a></td>
(...skipping 14 matching lines...) Expand all
242 <td>Allows macros that accept a variable number of arguments</td> 245 <td>Allows macros that accept a variable number of arguments</td>
243 <td><a href="http://stackoverflow.com/questions/4786649/are-variadic-macros-nons tandard"> 246 <td><a href="http://stackoverflow.com/questions/4786649/are-variadic-macros-nons tandard">
244 Are Variadic macros nonstandard?</a></td> 247 Are Variadic macros nonstandard?</a></td>
245 <td>Usage should be rare. <a href="https://groups.google.com/a/chromium.org/foru m/#!topic/chromium-dev/sRx9j3CQqyA">Discussion thread</a></td> 248 <td>Usage should be rare. <a href="https://groups.google.com/a/chromium.org/foru m/#!topic/chromium-dev/sRx9j3CQqyA">Discussion thread</a></td>
246 </tr> 249 </tr>
247 250
248 <tr> 251 <tr>
249 <td>Variadic Templates</td> 252 <td>Variadic Templates</td>
250 <td><code>template &lt;<i>typename</i> ... <i>arg</i>&gt;</code></td> 253 <td><code>template &lt;<i>typename</i> ... <i>arg</i>&gt;</code></td>
251 <td>Allows templates that accept a variable number of arguments</td> 254 <td>Allows templates that accept a variable number of arguments</td>
252 <td>TODO: documentation link</td> 255 <td><a href="http://en.cppreference.com/w/cpp/language/parameter_pack">
256 Parameter pack</a></td>
253 <td>Usage should be rare. Use instead of .pump files. <a href="https://groups.go ogle.com/a/chromium.org/forum/#!topic/chromium-dev/6ItymeMXpMc">Discussion threa d</a></td> 257 <td>Usage should be rare. Use instead of .pump files. <a href="https://groups.go ogle.com/a/chromium.org/forum/#!topic/chromium-dev/6ItymeMXpMc">Discussion threa d</a></td>
254 </tr> 258 </tr>
255 259
256 </tbody> 260 </tbody>
257 </table> 261 </table>
258 262
259 <h2 id="blacklist">C++11 Blacklist (Disallowed and Banned Features)</h2> 263 <h2 id="blacklist">C++11 Blacklist (Disallowed and Banned Features)</h2>
260 264
261 <p>This section lists features that are not allowed to be used yet. 265 <p>This section lists features that are not allowed to be used yet.
262 266
(...skipping 11 matching lines...) Expand all
274 <th style='width:240px;'>Snippet</th> 278 <th style='width:240px;'>Snippet</th>
275 <th style='width:240px;'>Description</th> 279 <th style='width:240px;'>Description</th>
276 <th style='width:240px;'>Documentation Link</th> 280 <th style='width:240px;'>Documentation Link</th>
277 <th style='width:240px;'>Notes</th> 281 <th style='width:240px;'>Notes</th>
278 </tr> 282 </tr>
279 283
280 <tr> 284 <tr>
281 <td>Constant Expressions</td> 285 <td>Constant Expressions</td>
282 <td><code>constexpr</code></td> 286 <td><code>constexpr</code></td>
283 <td>Compile-time constant expressions</td> 287 <td>Compile-time constant expressions</td>
284 <td>TODO: documentation link</td> 288 <td><a href="http://en.cppreference.com/w/cpp/language/constexpr">
289 constexpr specifier</a></td>
285 <td>Doesn't work in MSVS2013. Reevalute once it does. <a 290 <td>Doesn't work in MSVS2013. Reevalute once it does. <a
286 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Use_of_co nstexpr">Google 291 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Use_of_co nstexpr">Google
287 Style Guide on <code>constexpr</code></a></td> 292 Style Guide on <code>constexpr</code></a></td>
288 </tr> 293 </tr>
289 294
290 <tr> 295 <tr>
291 <td>Explicit Conversion Operators</td> 296 <td>Explicit Conversion Operators</td>
292 <td><code>explicit operator <i>type</i>() { 297 <td><code>explicit operator <i>type</i>() {
293 <br />&nbsp;&nbsp;// code<br /> }</code></td> 298 <br />&nbsp;&nbsp;// code<br /> }</code></td>
294 <td>Allows conversion operators that cannot be implicitly invoked</td> 299 <td>Allows conversion operators that cannot be implicitly invoked</td>
(...skipping 30 matching lines...) Expand all
325 <td><a href="http://en.cppreference.com/w/cpp/language/types"> 330 <td><a href="http://en.cppreference.com/w/cpp/language/types">
326 Fundamental types</a></td> 331 Fundamental types</a></td>
327 <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> 332 <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>
328 </tr> 333 </tr>
329 334
330 <tr> 335 <tr>
331 <td>Raw String Literals</td> 336 <td>Raw String Literals</td>
332 <td><code>string <i>var</i>=R&quot;(<i>raw_string</i>)&quot;;</code></td> 337 <td><code>string <i>var</i>=R&quot;(<i>raw_string</i>)&quot;;</code></td>
333 <td>Allows a string to be encoded without any escape 338 <td>Allows a string to be encoded without any escape
334 sequences, easing parsing in regex expressions, for example</td> 339 sequences, easing parsing in regex expressions, for example</td>
335 <td>TODO: documentation link</td> 340 <td><a href="http://en.cppreference.com/w/cpp/language/string_literal">
341 string literal</a></td>
336 <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> 342 <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>
337 </tr> 343 </tr>
338 344
339 <tr> 345 <tr>
340 <td>Rvalue References (and Move Semantics)</td> 346 <td>Rvalue References (and Move Semantics)</td>
341 <td><code>T(T&amp;&amp; t)</code> and <code>T&amp; operator=(T&amp;&amp; t)</cod e></td> 347 <td><code>T(T&amp;&amp; t)</code> and <code>T&amp; operator=(T&amp;&amp; t)</cod e></td>
342 <td>Reference that only binds to a temporary object</td> 348 <td>Reference that only binds to a temporary object</td>
343 <td>TODO: documentation link</td> 349 <td><a href="http://en.cppreference.com/w/cpp/language/references#Rvalue_referen ces">
350 Rvalue references</a></td>
344 <td>To be revisited in the future. Allowed in exceptional cases where approved by the OWNERS of src/styleguide/c++/. <a href="https://groups.google.com/a/chrom ium.org/d/topic/chromium-dev/UnRaORb4TSw">Discussion thread</a></td> 351 <td>To be revisited in the future. Allowed in exceptional cases where approved by the OWNERS of src/styleguide/c++/. <a href="https://groups.google.com/a/chrom ium.org/d/topic/chromium-dev/UnRaORb4TSw">Discussion thread</a></td>
345 </tr> 352 </tr>
346 353
347 <tr> 354 <tr>
348 <td>(Uniform) Initialization Syntax</td> 355 <td>(Uniform) Initialization Syntax</td>
349 <td><code><i>type</i> <i>name</i> { [<i>value</i> ..., <i>value</i>]};</code></t d> 356 <td><code><i>type</i> <i>name</i> { [<i>value</i> ..., <i>value</i>]};</code></t d>
350 <td>Allows any object of primitive, aggregate or class 357 <td>Allows any object of primitive, aggregate or class
351 type to be initialized using brace syntax</td> 358 type to be initialized using brace syntax</td>
352 <td>TODO: documentation link</td> 359 <td>TODO: documentation link</td>
353 <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> 360 <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>
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 <td>Allows class type members</td> 463 <td>Allows class type members</td>
457 <td><a href="http://en.cppreference.com/w/cpp/language/union"> 464 <td><a href="http://en.cppreference.com/w/cpp/language/union">
458 Union declarations</a></td> 465 Union declarations</a></td>
459 <td></td> 466 <td></td>
460 </tr> 467 </tr>
461 468
462 <tr> 469 <tr>
463 <td>User-Defined Literals</td> 470 <td>User-Defined Literals</td>
464 <td><code><i>type</i> <i>var</i> = <i>literal_value</i>_<i>type</i></code></td> 471 <td><code><i>type</i> <i>var</i> = <i>literal_value</i>_<i>type</i></code></td>
465 <td>Allows user-defined literal expressions</td> 472 <td>Allows user-defined literal expressions</td>
466 <td>TODO: documentation link</td> 473 <td><a href="http://en.cppreference.com/w/cpp/language/user_literal">
474 User-defined literals</a></td>
467 <td></td> 475 <td></td>
468 </tr> 476 </tr>
469 477
470 </tbody> 478 </tbody>
471 </table> 479 </table>
472 480
473 <h3 id="blacklist_stdlib">C++11 Standard Library features</h3> 481 <h3 id="blacklist_stdlib">C++11 Standard Library features</h3>
474 482
475 <details> 483 <details>
476 484
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 </tr> 978 </tr>
971 979
972 </tbody> 980 </tbody>
973 </table> 981 </table>
974 982
975 </details> 983 </details>
976 984
977 </div> 985 </div>
978 </body> 986 </body>
979 </html> 987 </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