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

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

Issue 2932053002: Use C++11 alignment primitives (Closed)
Patch Set: Fixes Created 3 years, 6 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
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 71
72 <tr> 72 <tr>
73 <td>__func__ Local Variable</td> 73 <td>__func__ Local Variable</td>
74 <td><code>__func__</code></td> 74 <td><code>__func__</code></td>
75 <td>Provides a local variable containing the name of the enclosing function</td> 75 <td>Provides a local variable containing the name of the enclosing function</td>
76 <td><a href="http://en.cppreference.com/w/cpp/language/function#func">__func__</ a></td> 76 <td><a href="http://en.cppreference.com/w/cpp/language/function#func">__func__</ a></td>
77 <td>Use instead of the non-standard <code>__FUNCTION__</code>. <a href="https:// groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/ojGfcgSDzHM">Discuss ion thread</a></td> 77 <td>Use instead of the non-standard <code>__FUNCTION__</code>. <a href="https:// groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/ojGfcgSDzHM">Discuss ion thread</a></td>
78 </tr> 78 </tr>
79 79
80 <tr> 80 <tr>
81 <td>alignas / alignof</td>
82 <td><code>alignas(alignof(T)) char[10];</code></td>
83 <td>Queries or specifies storage alignment.</td>
84 <td><a href="http://en.cppreference.com/w/chttp://en.cppreference.com/w/cpp/lang uage/alignas">alignas</a>, <a href="http://en.cppreference.com/w/cpp/language/al ignof">alignof</a></td>
85 <td><code>alignof()</code> can be used. <code>alignas()</code> must be used with care because it does not interact well with export and packing specifiers. If y our declaration contains any other attributes, use <code>ALIGNAS()</code> from < code>base/compiler_specific.h</code> instead. <a href="https://codereview.chromi um.org/2670873002/">Patch where this was discussed</a></td>
86 </tr>
87
88 <tr>
81 <td>Angle Bracket Parsing in Templates</td> 89 <td>Angle Bracket Parsing in Templates</td>
82 <td><code>&gt;&gt;</code> for <code>&gt; &gt;</code>, <code>&lt;::</code> for <c ode>&lt; ::</code></td> 90 <td><code>&gt;&gt;</code> for <code>&gt; &gt;</code>, <code>&lt;::</code> for <c ode>&lt; ::</code></td>
83 <td>More intuitive parsing of template parameters</td> 91 <td>More intuitive parsing of template parameters</td>
84 <td><a href="http://stackoverflow.com/questions/15785496/c-templates-angle-brack ets-pitfall-what-is-the-c11-fix">C++ templates angle brackets pitfall</a></td> 92 <td><a href="http://stackoverflow.com/questions/15785496/c-templates-angle-brack ets-pitfall-what-is-the-c11-fix">C++ templates angle brackets pitfall</a></td>
85 <td>Recommended to increase readability. Approved without discussion.</td> 93 <td>Recommended to increase readability. Approved without discussion.</td>
86 </tr> 94 </tr>
87 95
88 <tr> 96 <tr>
89 <td>Arrays</td> 97 <td>Arrays</td>
90 <td><code>std::array</code></td> 98 <td><code>std::array</code></td>
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 611
604 <tr> 612 <tr>
605 <th style='width:240px;'>Feature</th> 613 <th style='width:240px;'>Feature</th>
606 <th style='width:240px;'>Snippet</th> 614 <th style='width:240px;'>Snippet</th>
607 <th style='width:240px;'>Description</th> 615 <th style='width:240px;'>Description</th>
608 <th style='width:240px;'>Documentation Link</th> 616 <th style='width:240px;'>Documentation Link</th>
609 <th style='width:240px;'>Notes and Discussion Thread</th> 617 <th style='width:240px;'>Notes and Discussion Thread</th>
610 </tr> 618 </tr>
611 619
612 <tr> 620 <tr>
621 <td>Aligned storage</td>
622 <td><code>std::aligned_storage&lt;10, 128&gt;</code></td>
623 <td>Uninitialized storage for objects requiring specific alignment.</td>
624 <td><a href="http://en.cppreference.com/w/cpp/types/aligned_storage">std::aligne d_storage</a></td>
625 <td>MSVC 2017's implementation does not align on boundaries greater than sizeof( double) = 8 bytes. Use <code>alignas(128) char foo[10];</code> instead. <a href= "https://codereview.chromium.org/2932053002">Patch where this was discovered</a> .</td>
626 </tr>
627
628 <tr>
613 <td>Atomics</td> 629 <td>Atomics</td>
614 <td><code>&lt;atomic&gt;</code></td> 630 <td><code>&lt;atomic&gt;</code></td>
615 <td>Fine-grained atomic types and operations</td> 631 <td>Fine-grained atomic types and operations</td>
616 <td><a href="http://en.cppreference.com/w/cpp/atomic">Atomic operations library< /a></td> 632 <td><a href="http://en.cppreference.com/w/cpp/atomic">Atomic operations library< /a></td>
617 <td>Use in tcmalloc has caused <a href="http://crbug.com/572525">performance reg ressions</a>. Banned until we understand this better. <a href="https://groups.go ogle.com/a/chromium.org/forum/#!topic/cxx/Ej3RAiaI44s">Discussion Thread</a></td > 633 <td>Use in tcmalloc has caused <a href="http://crbug.com/572525">performance reg ressions</a>. Banned until we understand this better. <a href="https://groups.go ogle.com/a/chromium.org/forum/#!topic/cxx/Ej3RAiaI44s">Discussion Thread</a></td >
618 </tr> 634 </tr>
619 635
620 <tr> 636 <tr>
621 <td>Bind Operations</td> 637 <td>Bind Operations</td>
622 <td><code>std::bind(<i>function</i>, <i>args</i>, ...)</code></td> 638 <td><code>std::bind(<i>function</i>, <i>args</i>, ...)</code></td>
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 <tr> 778 <tr>
763 <td>Address Retrieval</td> 779 <td>Address Retrieval</td>
764 <td><code>std::addressof()</code></td> 780 <td><code>std::addressof()</code></td>
765 <td>Obtains the address of an object even with overloaded <code>operator&amp;</c ode></td> 781 <td>Obtains the address of an object even with overloaded <code>operator&amp;</c ode></td>
766 <td><a href="http://en.cppreference.com/w/cpp/memory/addressof">std::addressof</ a></td> 782 <td><a href="http://en.cppreference.com/w/cpp/memory/addressof">std::addressof</ a></td>
767 <td>Usage should be rare as <a href="https://google.github.io/styleguide/cppguid e.html#Operator_Overloading">operator overloading</a> is rare and <code>&amp;</c ode> should suffice in most cases. May be preferable over <code>&amp;</code> for performing object identity checks.</td> 783 <td>Usage should be rare as <a href="https://google.github.io/styleguide/cppguid e.html#Operator_Overloading">operator overloading</a> is rare and <code>&amp;</c ode> should suffice in most cases. May be preferable over <code>&amp;</code> for performing object identity checks.</td>
768 </tr> 784 </tr>
769 785
770 <tr> 786 <tr>
771 <td>Aligned Storage</td> 787 <td>Aligned Storage</td>
772 <td><code>std::aligned_storage&lt;Size, Align&gt;::type</code><br /> 788 <td><code>std::alignment_of&lt;T&gt;</code>, <code>std::aligned_union&lt;Size, . ..Types&gt;</code> <code>std::max_align_t</code></td>
773 <code>std::alignment_of&lt;T&gt;</code>, <code>std::aligned_union&lt;Size, ...Ty pes&gt;</code> <code>std::max_align_t</code></td>
774 <td>Declare uninitialized storage having a specified alignment, or determine ali gnments.</td> 789 <td>Declare uninitialized storage having a specified alignment, or determine ali gnments.</td>
775 <td><a href="http://en.cppreference.com/w/cpp/types/aligned_storage">std::aligne d_storage</a></td> 790 <td><a href="http://en.cppreference.com/w/cpp/types/aligned_union">std::aligned_ union</a></td>
776 <td><code>std::aligned_storage</code> and <code>std::aligned_union</code> are di sallowed in google3 over concerns about compatibility with internal cross-compil ing toolchains.</td> 791 <td><code>std::aligned_union</code> is disallowed in google3 over concerns about compatibility with internal cross-compiling toolchains. <code>std::aligned_stor age</code> is on the disallowed list due to compatibility concerns.</td>
777 </tr> 792 </tr>
778 793
779 <tr> 794 <tr>
780 <td>Allocator Traits</td> 795 <td>Allocator Traits</td>
781 <td><code>std::allocator_traits</code></td> 796 <td><code>std::allocator_traits</code></td>
782 <td>Provides an interface for accessing custom allocators</td> 797 <td>Provides an interface for accessing custom allocators</td>
783 <td><a href="http://en.cppreference.com/w/cpp/memory/allocator_traits">std::allo cator_traits</a></td> 798 <td><a href="http://en.cppreference.com/w/cpp/memory/allocator_traits">std::allo cator_traits</a></td>
784 <td>Usage should be rare.</td> 799 <td>Usage should be rare.</td>
785 </tr> 800 </tr>
786 801
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 <td><a href="http://en.cppreference.com/w/cpp/locale/wstring_convert">std::wstri ng_convert</a>, <a href="http://en.cppreference.com/w/cpp/locale/wbuffer_convert ">std::wbuffer_convert</a>, <a href="http://en.cppreference.com/w/cpp/locale/cod ecvt_utf8">std::codecvt_utf8</a>, <a href="http://en.cppreference.com/w/cpp/loca le/codecvt_utf16">std::codecvt_utf16</a>, <a href="http://en.cppreference.com/w/ cpp/locale/codecvt_utf8_utf16">std::codecvt_utf8_utf16</a></td> 935 <td><a href="http://en.cppreference.com/w/cpp/locale/wstring_convert">std::wstri ng_convert</a>, <a href="http://en.cppreference.com/w/cpp/locale/wbuffer_convert ">std::wbuffer_convert</a>, <a href="http://en.cppreference.com/w/cpp/locale/cod ecvt_utf8">std::codecvt_utf8</a>, <a href="http://en.cppreference.com/w/cpp/loca le/codecvt_utf16">std::codecvt_utf16</a>, <a href="http://en.cppreference.com/w/ cpp/locale/codecvt_utf8_utf16">std::codecvt_utf8_utf16</a></td>
921 <td>Non-UTF-8 text is banned by the <a href="https://google.github.io/styleguide /cppguide.html#Non-ASCII_Characters">Google Style Guide</a>. However, may be use ful for consuming non-ASCII data.</td> 936 <td>Non-UTF-8 text is banned by the <a href="https://google.github.io/styleguide /cppguide.html#Non-ASCII_Characters">Google Style Guide</a>. However, may be use ful for consuming non-ASCII data.</td>
922 </tr> 937 </tr>
923 938
924 </tbody> 939 </tbody>
925 </table> 940 </table>
926 941
927 </div> 942 </div>
928 </body> 943 </body>
929 </html> 944 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698