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

Unified Diff: styleguide/c++/c++11.html

Issue 2466103002: Styleguide cleanup part 3. (Closed)
Patch Set: Reword Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: styleguide/c++/c++11.html
diff --git a/styleguide/c++/c++11.html b/styleguide/c++/c++11.html
index dc2728b74df608b413a34e915160c36aa0e166a4..09d63bdf0a4c9587f40fda6f4db7fdbcc25bef94 100644
--- a/styleguide/c++/c++11.html
+++ b/styleguide/c++/c++11.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<!--
Copyright 2014 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
@@ -95,7 +95,7 @@ with the language.</p>
<td><code>std::array</code></td>
<td>A fixed-size replacement for built-in arrays, with STL support</td>
<td><a href="http://en.cppreference.com/w/cpp/container/array">std::array</a></td>
-<td>Useful in performance-critical situations, with small, fixed-size arrays. In most cases, consider std::vector instead. std::vector is cheaper to std::move and is more widely used. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/pVRQCRWHEU8">Discussion thread</a>.</td>
+<td>Useful in performance-critical situations, with small, fixed-size arrays. In most cases, consider std::vector instead. std::vector is cheaper to std::move and is more widely used. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/pVRQCRWHEU8">Discussion thread</a></td>
</tr>
<tr>
@@ -103,7 +103,7 @@ with the language.</p>
<td><code>auto</code></td>
<td>Automatic type deduction</td>
<td><a href="http://en.cppreference.com/w/cpp/language/auto">auto specifier</a></td>
-<td><a href="https://google.github.io/styleguide/cppguide.html#auto">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.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>
+<td><a href="https://google.github.io/styleguide/cppguide.html#auto">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.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>
</tr>
<tr>
@@ -111,7 +111,7 @@ with the language.</p>
<td><code>constexpr</code></td>
<td>Compile-time constant expressions</td>
<td><a href="http://en.cppreference.com/w/cpp/language/constexpr">constexpr specifier</a></td>
-<td>Prefer to <code>const</code> for variables where possible. Use cautiously on functions. Don't go out of the way to convert existing code. <a href="https://google.github.io/styleguide/cppguide.html#Use_of_constexpr">Google Style Guide</a></td>
+<td>Prefer to <code>const</code> for variables where possible. Use cautiously on functions. Don't go out of the way to convert existing code. <a href="https://google.github.io/styleguide/cppguide.html#Use_of_constexpr">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/BE9xLUI-Vww">Discussion thread</a></td>
</tr>
<tr>
@@ -163,7 +163,7 @@ enum <i>enumname</i> : <i>base-type</i></code></td>
<td><code>explicit operator <i>type</i>() { ... }</code></td>
<td>Allows conversion operators that cannot be implicitly invoked</td>
<td><a href="http://en.cppreference.com/w/cpp/language/explicit">explicit specifier</a></td>
-<td>Prefer to the "safe bool" idiom. <a href="https://groups.google.com/a/chromium.org/d/msg/chromium-dev/zGF1SrQ-1HQ/BAiC12vwPeEJ">Discussion thread</a></td>
+<td>Prefer to the "safe bool" idiom. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/zGF1SrQ-1HQ">Discussion thread</a></td>
</tr>
<tr>
@@ -187,8 +187,7 @@ enum <i>enumname</i> : <i>base-type</i></code></td>
<td><code>[<i>captures</i>](<i>params</i>) -&gt; <i>ret</i> { <i>body</i> }</code></td>
<td>Anonymous functions</td>
<td><a href="http://en.cppreference.com/w/cpp/language/lambda">Lambda functions</a></td>
-<td>Do not bind or store capturing lambdas outside the lifetime of the stack frame they are defined in. Captureless lambdas can be used with <code>base::Callback</code>, such as <code>base::Bind([](int j){}, i);</code>, because they offer protection against a large class of object lifetime mistakes. Don't use default captures (<code>[=]</code>, <code>[&amp;]</code> &ndash; <a href="https://google.github.io/styleguide/cppguide.html#Lambda_expressions">Google Style Guide</a>). Lambdas are typically useful as a parameter to methods or functions that will use them immediately, such as those in <code>&lt;algorithm&gt;</code>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/D9UnnxBnciQ">Discussion thread</a>, <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/QxjsPELDYdQ">uncapturing thread</a>.
-</td>
+<td>Lambdas are typically useful as a parameter to methods or functions that will use them immediately, such as those in <code>&lt;algorithm&gt;</code>. Be careful with default captures (<code>[=]</code>, <code>[&amp;]</code>), and do not bind or store any capturing lambdas outside the lifetime of the stack frame they are defined in; use <code>base::Callback</code> for this instead, as it helps prevent object lifetime mistakes. (Captureless lambdas can be used with <code>base::Bind</code> as they do not have the same risks.) <a href="https://google.github.io/styleguide/cppguide.html#Lambda_expressions">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/D9UnnxBnciQ">Discussion thread</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/QxjsPELDYdQ">Another discussion thread</a> (about captureless lambdas and <code>base::Bind</code>).</td>
</tr>
<tr>
@@ -227,7 +226,7 @@ enum <i>enumname</i> : <i>base-type</i></code></td>
<td><code>nullptr</code></td>
<td>Declares a type-safe null pointer</td>
<td><a href="http://en.cppreference.com/w/cpp/language/nullptr">nullptr, the pointer literal</a></td>
-<td>Prefer over <code>NULL</code> or <code>0</code>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/4mijeJHzxLg">Discussion thread</a>. <a href="https://google.github.io/styleguide/cppguide.html#0_and_nullptr/NULL">Google Style Guide</a>. <code>std::nullptr_t</code> can be used too.</td>
+<td>Prefer over <code>NULL</code> or <code>0</code>. <a href="https://google.github.io/styleguide/cppguide.html#0_and_nullptr/NULL">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/4mijeJHzxLg">Discussion thread</a></td>
</tr>
<tr>
@@ -252,7 +251,7 @@ enum <i>enumname</i> : <i>base-type</i></code></td>
template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td>Reference that only binds to a temporary object</td>
<td><a href="http://en.cppreference.com/w/cpp/language/reference#Rvalue_references">Rvalue references</a></td>
-<td>As per the <a href="https://google.github.io/styleguide/cppguide.html#Rvalue_references">Google Style Guide</a>: Only use these to define move constructors and move assignment operators, and for perfect forwarding. Most classes should not be copyable, even if movable. Continue to use DISALLOW_COPY_AND_ASSIGN in most cases. <a href="https://groups.google.com/a/chromium.org/d/topic/chromium-dev/UnRaORb4TSw">Discussion thread</a>. <a href="https://groups.google.com/a/chromium.org/d/topic/cxx/Q526tkruXpM">Another discussion thread</a>.</td>
+<td>Only use these to define move constructors and move assignment operators, and for perfect forwarding. Most classes should not be copyable, even if movable. Continue to use DISALLOW_COPY_AND_ASSIGN in most cases. <a href="https://google.github.io/styleguide/cppguide.html#Rvalue_references">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/UnRaORb4TSw">Discussion thread</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/Q526tkruXpM">Another discussion thread</a></td>
</tr>
<tr>
@@ -260,7 +259,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td>Typedefs within <code>&lt;stdint.h&gt;</code> and <code>&lt;inttypes&gt;</code></td>
<td>Provides fixed-size integers independent of platforms</td>
<td><a href="http://en.cppreference.com/w/cpp/header/cstdint">Standard library header &lt;cstdint&gt;</a></td>
-<td>Already in common use in the codebase. Approved without discussion.</td>
+<td>Approved without discussion. Required by the <a href="http://google.github.io/styleguide/cppguide.html#Integer_Types">Google Style Guide</a>.</td>
</tr>
<tr>
@@ -276,7 +275,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td><code>auto <i>function declaration</i> -> <i>return_type</i></code></td>
<td>Allows trailing function return value syntax</td>
<td><a href="http://en.cppreference.com/w/cpp/language/function">Declaring functions</a></td>
-<td>Use only where it considerably improves readability. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/OQyYSfH9m2M">Discussion thread</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/Lkp0nubVd0Q">Another discussion thread.</a></td>
+<td>Use only where it considerably improves readability. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/OQyYSfH9m2M">Discussion thread</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/Lkp0nubVd0Q">Another discussion thread</a></td>
</tr>
<tr>
@@ -300,7 +299,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td><code>union <i>name</i> {<i>class</i> <i>var</i>}</code></td>
<td>Allows class type members</td>
<td><a href="http://en.cppreference.com/w/cpp/language/union">Union declaration</a></td>
-<td>Usage should be rare.</td>
+<td>Usage should be rare. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/3oK78s1ntgU">Discussion thread</a></td>
</tr>
<tr>
@@ -334,7 +333,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<th style='width:240px;'>Snippet</th>
<th style='width:240px;'>Description</th>
<th style='width:240px;'>Documentation Link</th>
-<th style='width:240px;'>Notes</th>
+<th style='width:240px;'>Notes and Discussion Thread</th>
</tr>
<tr>
@@ -360,7 +359,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<code>is_permutation<br/></td>
<td>Safe and performant implementations of common algorithms</td>
<td><a href="http://en.cppreference.com/w/cpp/header/algorithm">Standard library header &lt;algorithm&gt;</a></td>
-<td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/UJQk8S1IuHk">Discussion thread</a><br/> Note that &lt;algorithm&gt; contains a range-based <code>move</code> method. This is allowed, but because people may confuse it with the single-arg <code>std::move</code>, there is often a way to write code without it that is more readable. <a href='https://groups.google.com/a/chromium.org/forum/#!topic/cxx/8WzmtYrZvQ8'>Discussion thread</a></td>
+<td>Note that &lt;algorithm&gt; contains a range-based <code>move</code> method. This is allowed, but because people may confuse it with the single-arg <code>std::move</code>, there is often a way to write code without it that is more readable. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/UJQk8S1IuHk">Discussion thread</a>. <a href='https://groups.google.com/a/chromium.org/forum/#!topic/cxx/8WzmtYrZvQ8'>Another discussion thread</a></td>
</tr>
<tr>
@@ -368,7 +367,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td><code>std::begin()</code>, <code>std::end()</code></td>
<td>Allows use of free functions on any container, including fixed-size arrays</td>
<td><a href="http://en.cppreference.com/w/cpp/iterator/begin">std::begin</a>, <a href="http://en.cppreference.com/w/cpp/iterator/end">std::end</a></td>
-<td>Useful for fixed-size arrays. Note that non-member <code>cbegin()</code> and <code>cend()</code> are not available until C++14. <a href="https://groups.google.com/a/chromium.org/d/topic/cxx/5iFNE8P5qT4/discussion">Discussion thread</a></td>
+<td>Useful for fixed-size arrays. Note that non-member <code>cbegin()</code> and <code>cend()</code> are not available until C++14. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/5iFNE8P5qT4">Discussion thread</a></td>
</tr>
<tr>
@@ -384,15 +383,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td>E.g. <code>std::vector::cbegin()</code>, <code>std::vector::cend()</code></td>
<td>Allows more widespread use of <code>const_iterator</code></td>
<td><a href="http://en.cppreference.com/w/cpp/container/vector/begin">std::vector::cbegin</a>, <a href="http://en.cppreference.com/w/cpp/container/vector/end">std::vector::cend<a></td>
-<td>Applies to all containers, not just <code>vector</code>. Consider using <code>const_iterator</code> over <code>iterator</code> where possible for the same reason as using <code>const</code> variables and functions where possible; see Effective Modern C++ item 13 for motivation. <a href="https://groups.google.com/a/chromium.org/d/topic/cxx/cS83F_buqLM/discussion">Discussion thread</a></td>
-</tr>
-
-<tr>
-<td>Containers containing move-only types</td>
-<td><code>vector&lt;scoped_ptr&gt;</code></td>
-<td>Enables containers that contain move-only types like <code>scoped_ptr</code></td>
-<td>TODO</td>
-<td>Prefer over <a href="http://crbug.com/554289">ScopedVector</a>.</td>
+<td>Applies to all containers, not just <code>vector</code>. Consider using <code>const_iterator</code> over <code>iterator</code> where possible for the same reason as using <code>const</code> variables and functions where possible; see Effective Modern C++ item 13. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/cS83F_buqLM">Discussion thread</a></td>
</tr>
<tr>
@@ -416,7 +407,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td><code>std::forward()</code></td>
<td>Perfectly forwards arguments (including rvalues)</td>
<td><a href="http://en.cppreference.com/w/cpp/utility/forward">std::forward</a></td>
-<td>Allowed, though usage should be rare (primarily for forwarding constructor arguments, or in carefully reviewed library code). <a href="https://groups.google.com/a/chromium.org/d/topic/cxx/-O7euklhSxs/discussion">Discussion thread</a>
+<td>Allowed, though usage should be rare (primarily for forwarding constructor arguments, or in carefully reviewed library code). <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/-O7euklhSxs">Discussion thread</a>
</td>
</tr>
@@ -425,7 +416,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td><code>std::initializer_list&lt;T&gt;</code></td>
<td>Allows containers to be initialized with aggregate elements</td>
<td><a href="http://en.cppreference.com/w/cpp/utility/initializer_list">std::initializer_list</a></td>
-<td>Be cautious adding new constructors which take these, as they can hide non-initializer_list constructors in undesirable ways; see Effective Modern C++ Item 7 for more.</td>
+<td>Be cautious adding new constructors which take these, as they can hide non-initializer_list constructors in undesirable ways; see Effective Modern C++ Item 7. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/TQQ-L51_naM">Discussion thread</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/UpiCpuu9UNc">Another discussion thread</a></td>
</tr>
<tr>
@@ -445,7 +436,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td><code>std::make_move_iterator()</code></td>
<td>Wraps an iterator so that it moves objects instead of copying them.</td>
<td><a href="http://en.cppreference.com/w/cpp/iterator/make_move_iterator">std::make_move_iterator</a></td>
-<td>Useful to move objects between containers that contain move-only types like <code>scoped_ptr</code>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/lccnUljOHQU">Discussion thread</a></td>
+<td>Useful to move objects between containers that contain move-only types like <code>std::unique_ptr</code>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/lccnUljOHQU">Discussion thread</a></td>
</tr>
<tr>
@@ -457,6 +448,14 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
</tr>
<tr>
+<td>Null Pointer Type</td>
+<td><code>std::nullptr_t</code></td>
+<td>Allows referencing the type of <code>nullptr</code>, e.g. in templates</td>
+<td><a href="http://en.cppreference.com/w/cpp/types/nullptr_t">std::nullptr_t</a></td>
+<td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/UNaXc8R7eJ0">Discussion thread</a></td>
+</tr>
+
+<tr>
<td>String Direct Reference Functions</td>
<td><code>std::string::front()</code>, <code>std::string::back()</code></td>
<td>Returns a reference to the front or back of a string</td>
@@ -474,7 +473,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<code>enable_if</code>, <code>conditional</code>, <code>result_of</code><br/></td>
<td>Allows compile-time inspection of the properties of types</td>
<td><a href="http://en.cppreference.com/w/cpp/header/type_traits">Standard library header &lt;type_traits&gt;</a></td>
-<td>Note that not all type traits are available on all platforms (e.g. <code>std::underlying_type</code> doesn't work in libstdc++4.6). Use judiciously. <a href='https://groups.google.com/a/chromium.org/forum/#!topic/cxx/vCxo4tZNd_M'>Discussion thread</a></td>
+<td>Note that not all type traits are available on all platforms (e.g. <code>std::underlying_type</code> doesn't work in libstdc++ 4.6). Use judiciously. <a href='https://groups.google.com/a/chromium.org/forum/#!topic/cxx/vCxo4tZNd_M'>Discussion thread</a></td>
</tr>
<tr>
@@ -482,8 +481,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td>All C++11 features in <code>&lt;tuple&gt;</code>, e.g. <code>std::tie</code> and <code>std::tuple</code>.</td>
<td>A fixed-size ordered collection of values of mixed types</td>
<td><a href="http://en.cppreference.com/w/cpp/header/tuple">Standard library header &lt;tuple&gt;</a></td>
-<td>Use <code>base::get</code> instead of <code>std::get</code> in case the <code>std::tuple</code> may be a rvalue-reference.
-<code>std::get</code> in &lt;=libstdc++-4.6 misses an overload for rvalue-reference of a tuple, and <code>base::get</code> complements it. </td>
+<td>libstdc++ 4.6 has a bug where <code>std::get</code> can return an lvalue-reference when it should return an rvalue-reference. <code>base::get</code> can be used to avoid this. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/0NnCRmMY1xY">Discussion thread</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/VA7Ej2IWS2w">Another discussion thread</a></td>
</tr>
<tr>
@@ -491,7 +489,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td><code>std::unordered_set</code>, <code>std::unordered_map</code>, <code>std::unordered_multiset</code>, <code>std::unordered_multimap</code></td>
<td>Allows efficient containers of key/value pairs</td>
<td><a href="http://en.cppreference.com/w/cpp/container/unordered_map">std::unordered_map</a>, <a href="http://en.cppreference.com/w/cpp/container/unordered_set">std::unordered_set</a></td>
-<td>Per the <a href="https://google.github.io/styleguide/cppguide.html#std_hash">Google Style Guide</a>, specify custom hashers instead of specializing <code>std::hash</code> for custom types. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/nCdjQqnouO4">Discussion thread</a>.</td>
+<td>Specify custom hashers instead of specializing <code>std::hash</code> for custom types. <a href="https://google.github.io/styleguide/cppguide.html#std_hash">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/nCdjQqnouO4">Discussion thread</a></td>
</tr>
<tr>
@@ -499,7 +497,7 @@ template &lt;typename T&gt;<br/>void Function(T&& t) { ... }</code></td>
<td><code>std::unique_ptr&lt;<i>type</i>&gt;</code></td>
<td>A smart pointer with sole ownership of the owned object.</td>
<td><a href="http://en.cppreference.com/w/cpp/memory/unique_ptr">std::unique_ptr</a></td>
-<td>Use in all newly written code. <a href="https://google.github.io/styleguide/cppguide.html#Ownership_and_Smart_Pointers">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/d/msg/cxx/aT2wsBLKvzI/oZuZ718oAwAJ">Discussion thread</a>. <code>scoped_ptr</code> is a <a href="https://groups.google.com/a/chromium.org/d/msg/chromium-dev/roY78iTblYc/bb8nYsxfCgAJ">typedef for <code>std::unique_ptr</code></a> and is going away shortly.</td>
+<td><a href="https://google.github.io/styleguide/cppguide.html#Ownership_and_Smart_Pointers">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/aT2wsBLKvzI">Discussion thread</a></td>
</tr>
</tbody>
@@ -523,7 +521,7 @@ codebase.
<th style='width:240px;'>Snippet</th>
<th style='width:240px;'>Description</th>
<th style='width:240px;'>Documentation Link</th>
-<th style='width:240px;'>Notes</th>
+<th style='width:240px;'>Notes and Discussion Thread</th>
</tr>
<tr>
@@ -553,7 +551,7 @@ T().f();&nbsp;&nbsp;// second<br />
std::move(t).f();&nbsp;&nbsp;// second</code></td>
<td>Allows class member functions to only bind to |this| as an rvalue or lvalue.</td>
<td><a href="http://en.cppreference.com/w/cpp/language/member_functions#const-.2C_volatile-.2C_and_ref-qualified_member_functions">const-, volatile-, and ref-qualified member functions</a></td>
-<td>Banned in the <a href="https://google.github.io/styleguide/cppguide.html#C++11">Google Style Guide</a>. May only be used in Chromium with explicit approval from <code>styleguide/c++/OWNERS</code>. <a href="https://groups.google.com/a/chromium.org/d/topic/cxx/gowclr2LPQA/discussion">Discussion Thread</a></td>
+<td>Banned in the <a href="https://google.github.io/styleguide/cppguide.html#C++11">Google Style Guide</a>. May only be used in Chromium with explicit approval from <code>styleguide/c++/OWNERS</code>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/gowclr2LPQA">Discussion Thread</a></td>
</tr>
<tr>
@@ -579,7 +577,7 @@ std::move(t).f();&nbsp;&nbsp;// second</code></td>
<th style='width:240px;'>Snippet</th>
<th style='width:240px;'>Description</th>
<th style='width:240px;'>Documentation Link</th>
-<th style='width:240px;'>Notes</th>
+<th style='width:240px;'>Notes and Discussion Thread</th>
</tr>
<tr>
@@ -587,7 +585,7 @@ std::move(t).f();&nbsp;&nbsp;// second</code></td>
<td><code>&lt;atomic&gt;</code></td>
<td>Fine-grained atomic types and operations</td>
<td><a href="http://en.cppreference.com/w/cpp/atomic">Atomic operations library</a></td>
-<td>Use in tcmalloc has caused <a href="http://crbug.com/572525">performance regressions</a>. Banned until we understand this better. <a href="https://groups.google.com/a/chromium.org/d/topic/cxx/Ej3RAiaI44s/discussion">Discussion Thread</a></td>
+<td>Use in tcmalloc has caused <a href="http://crbug.com/572525">performance regressions</a>. Banned until we understand this better. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/Ej3RAiaI44s">Discussion Thread</a></td>
</tr>
<tr>
@@ -619,7 +617,7 @@ std::move(t).f();&nbsp;&nbsp;// second</code></td>
<td><code>std::shared_ptr</code></td>
<td>Allows shared ownership of a pointer through reference counts</td>
<td><a href="http://en.cppreference.com/w/cpp/memory/shared_ptr">std::shared_ptr</a></td>
-<td>Needs a lot more evaluation for Chromium, and there isn't enough of a push for this feature. <a href="https://google.github.io/styleguide/cppguide.html#Ownership_and_Smart_Pointers">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/d/topic/cxx/aT2wsBLKvzI/discussion">Discussion Thread</a>.</td>
+<td>Needs a lot more evaluation for Chromium, and there isn't enough of a push for this feature. <a href="https://google.github.io/styleguide/cppguide.html#Ownership_and_Smart_Pointers">Google Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/aT2wsBLKvzI">Discussion Thread</a></td>
</tr>
<tr>
@@ -650,7 +648,7 @@ work in all our compilers yet.</p>
<th style='width:240px;'>Snippet</th>
<th style='width:240px;'>Description</th>
<th style='width:240px;'>Documentation Link</th>
-<th style='width:240px;'>Notes</th>
+<th style='width:240px;'>Notes and Discussion Thread</th>
</tr>
<tr>
@@ -658,7 +656,7 @@ work in all our compilers yet.</p>
<td><code>alignas</code> specifier, <code>alignof</code> operator</td>
<td>Object alignment</td>
<td><a href="http://en.cppreference.com/w/cpp/language/alignas">alignas specifier</a>, <a href="http://en.cppreference.com/w/cpp/language/alignof">alignof operator</a></td>
-<td>Reevaluate now that MSVS2015 is available. <a href="https://groups.google.com/a/chromium.org/d/msg/cxx/rwXN02jzzq0/CpUc1ZzMBQAJ">Discussion thread</a></td>
+<td>Reevaluate now that MSVS2015 is available. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/rwXN02jzzq0">Discussion thread</a></td>
</tr>
<tr>
@@ -676,7 +674,7 @@ work in all our compilers yet.</p>
};</code></td>
<td>Allow derived classes to inherit constructors from base classes</td>
<td><a href="http://en.cppreference.com/w/cpp/language/using_declaration">Using-declaration</a></td>
-<td>Reevaluate now that MSVS2015 is available. <a href="https://groups.google.com/a/chromium.org/d/msg/chromium-dev/BULzgIKZ-Ao/PLO7_GoVNvYJ">Discussion thread</a></td>
+<td>Reevaluate now that MSVS2015 is available. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/BULzgIKZ-Ao">Discussion thread</a></td>
</tr>
<tr>
@@ -718,7 +716,7 @@ work in all our compilers yet.</p>
<th style='width:240px;'>Snippet</th>
<th style='width:240px;'>Description</th>
<th style='width:240px;'>Documentation Link</th>
-<th style='width:240px;'>Style Guide Usage</th>
+<th style='width:240px;'>Notes</th>
</tr>
<tr>
@@ -799,7 +797,7 @@ work in all our compilers yet.</p>
<td><code>std::function</code></td>
<td>Wraps a standard polymorphic function</td>
<td><a href="http://en.cppreference.com/w/cpp/utility/functional/function">std::function</a></td>
-<td></td>
+<td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/cxx/SoEj7oIDNuA">Discussion thread</a></td>
</tr>
<tr>
@@ -879,7 +877,7 @@ work in all our compilers yet.</p>
<td><code>std::stoi()</code>, <code>std::stol()</code>, <code>std::stoul()</code>, <code>std::stoll</code>, <code>std::stoull()</code>, <code>std::stof()</code>, <code>std::stod()</code>, <code>std::stold()</code>, <code>std::to_string()</code></td>
<td>Converts strings to/from numbers</td>
<td><a href="http://en.cppreference.com/w/cpp/string/basic_string/stol">std::stoi, std::stol, std::stoll</a>, <a href="http://en.cppreference.com/w/cpp/string/basic_string/stoul">std::stoul, std::stoull</a>, <a href="http://en.cppreference.com/w/cpp/string/basic_string/stof">std::stof, std::stod, std::stold</a>, <a href="http://en.cppreference.com/w/cpp/string/basic_string/to_string">std::to_string</a></td>
-<td></td>
+<td>May be useful to <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=593512">replace dmg_fp</a>.</td>
</tr>
<tr>
@@ -903,7 +901,7 @@ work in all our compilers yet.</p>
<td><code>std::type_index</code>, <code>std::type_info::hash_code()</code></td>
<td>Allows type information (most often within containers) that can be copied, assigned, or hashed</td>
<td><a href="http://en.cppreference.com/w/cpp/types/type_index">std::type_index</a>, <a href="http://en.cppreference.com/w/cpp/types/type_info/hash_code">std::type_info::hash_code</a></td>
-<td><code>std::type_index</code> is a thin wrapper for <code>std::type_info</code>, allowing you to use it directly within both associative and unordered containers</td>
+<td><code>std::type_index</code> is a thin wrapper for <code>std::type_info</code>, allowing you to use it directly within both associative and unordered containers.</td>
</tr>
<tr>
« 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