summaryrefslogtreecommitdiffstats
path: root/styleguide/c++/c++11.html
diff options
context:
space:
mode:
authordanakj <danakj@chromium.org>2014-09-26 13:03:04 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-26 20:03:21 +0000
commitd9a02e76127634286ff0c760f87db260b367492a (patch)
treea7ccdf1477eebf18fceb685d3c7298b322828b3a /styleguide/c++/c++11.html
parentd9b040ba4ff2ff78f183816b9d0e34c5f450160c (diff)
downloadchromium_src-d9a02e76127634286ff0c760f87db260b367492a.zip
chromium_src-d9a02e76127634286ff0c760f87db260b367492a.tar.gz
chromium_src-d9a02e76127634286ff0c760f87db260b367492a.tar.bz2
styleguide: Move Rvalue References to the Blacklist with Exceptions.
The discussion around Rvalue references has been that we should ban their use for now, but come back to it later. So that is what this does. One exceptional case that was agreed upon without dissent was to allow move semantics in scoped_ptr to allow use of scoped_ptr cleaner throughout the codebase, without leaking the requirement to understand Rvalue references outside of the scoped_ptr implementation. R=jamesr@chromium.org, thakis@chromium.org Review URL: https://codereview.chromium.org/607773002 Cr-Commit-Position: refs/heads/master@{#297016}
Diffstat (limited to 'styleguide/c++/c++11.html')
-rw-r--r--styleguide/c++/c++11.html30
1 files changed, 22 insertions, 8 deletions
diff --git a/styleguide/c++/c++11.html b/styleguide/c++/c++11.html
index 9659c9b..45559dd8 100644
--- a/styleguide/c++/c++11.html
+++ b/styleguide/c++/c++11.html
@@ -163,6 +163,28 @@ Are Variadic macros nonstandard?</a></td>
<p>This section lists features that are not allowed to be used yet.
+<table id="banned_list" class="unlined striped">
+<tbody>
+
+<tr>
+<th style='width:240px;'>Feature or Library</th>
+<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>
+</tr>
+
+<tr>
+<td>Rvalue References (and Move Semantics)</td>
+<td><code>T(T&amp;&amp; t)</code> and <code>T&amp; operator=(T&amp;&amp; t)</code></td>
+<td>Reference that only binds to a temporary object</td>
+<td>TODO: documentation link</td>
+<td>To be revisited in the future. Allowed in exceptional cases where approved by the OWNERS of src/styleguide/c++/.</td>
+</tr>
+
+</tbody>
+</table>
+
<h3 id="blacklist_banned">C++11 Banned Features</h3>
<p>This section will list C++11 features that are not allowed in the Chromium
@@ -414,14 +436,6 @@ sequences, easing parsing in regex expressions, for example</td>
</tr>
<tr>
-<td>Rvalue References (and Move Semantics)</td>
-<td><code>T(T&amp;&amp; t)</code> and <code>T&amp; operator=(T&amp;&amp; t)</code></td>
-<td>Reference that only binds to a temporary object</td>
-<td>TODO: documentation link</td>
-<td></td>
-</tr>
-
-<tr>
<td>Union Class Members</td>
<td><code>union <i>name</i> { <i>class</i> <i>var</i>}</code></td>
<td>Allows class type members</td>