Commit 12bfc748 authored by thakis's avatar thakis Committed by Commit bot

Update C++11 feature page.

Allow decltype.
Disallow long long, uniform initialization, raw string literals.

BUG=427584
NOTRY=true

Review URL: https://codereview.chromium.org/685663002

Cr-Commit-Position: refs/heads/master@{#301562}
parent 22758b88
...@@ -83,6 +83,16 @@ href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#auto">Goo ...@@ -83,6 +83,16 @@ href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#auto">Goo
Style Guide on <code>auto</code></a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/OQyYSfH9m2M">Discussion thread</a></td> Style Guide on <code>auto</code></a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/OQyYSfH9m2M">Discussion thread</a></td>
</tr> </tr>
<tr>
<td>Declared Type Accessor</td>
<td><code>decltype(<i>expression</i>)</code></td>
<td>Provides a means to determine the type of an expression at compile-time,
useful most often in templates.</td>
<td><a href="http://en.cppreference.com/w/cpp/language/decltype">
decltype specifier</a></td>
<td>Usage should be rare. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/_zoNvZd_dSo">Discussion thread</a></td>
</tr>
<tr> <tr>
<td>Enumerated Type Classes</td> <td>Enumerated Type Classes</td>
<td><code>enum class <i>classname</i></code></td> <td><code>enum class <i>classname</i></code></td>
...@@ -230,6 +240,24 @@ The __func__ Predeclared Identifier is Coming to C++</a></td> ...@@ -230,6 +240,24 @@ The __func__ Predeclared Identifier is Coming to C++</a></td>
<td>Doesn't work in MSVS2013. Reevaluate once it does. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/ojGfcgSDzHM">Discussion thread</a></td> <td>Doesn't work in MSVS2013. Reevaluate once it does. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/ojGfcgSDzHM">Discussion thread</a></td>
</tr> </tr>
<tr>
<td><code>long long</code> Type</td>
<td><code>long long <i>var</i>= <i>value</i>;</code></td>
<td>An integer of at least 64 bits</td>
<td><a href="http://en.cppreference.com/w/cpp/language/types">
Fundamental types</a></td>
<td>Use an stdint.h type if you need a 64bit number. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/RxugZ-pIDxk">Discussion thread</a></td>
</tr>
<tr>
<td>Raw String Literals</td>
<td><code>string <i>var</i>=R&quot;(<i>raw_string</i>)&quot;;</code></td>
<td>Allows a string to be encoded without any escape
sequences, easing parsing in regex expressions, for example</td>
<td>TODO: documentation link</td>
<td>Causes incorrect line numbers in MSVS2014 and gcc. Reevaluate once that works. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/2kWQHbbuMHI">Discussion thread</a></td>
</tr>
<tr> <tr>
<td>Rvalue References (and Move Semantics)</td> <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><code>T(T&amp;&amp; t)</code> and <code>T&amp; operator=(T&amp;&amp; t)</code></td>
...@@ -238,6 +266,15 @@ The __func__ Predeclared Identifier is Coming to C++</a></td> ...@@ -238,6 +266,15 @@ The __func__ Predeclared Identifier is Coming to C++</a></td>
<td>To be revisited in the future. Allowed in exceptional cases where approved by the OWNERS of src/styleguide/c++/.</td> <td>To be revisited in the future. Allowed in exceptional cases where approved by the OWNERS of src/styleguide/c++/.</td>
</tr> </tr>
<tr>
<td>(Uniform) Initialization Syntax</td>
<td><code><i>type</i> <i>name</i> { [<i>value</i> ..., <i>value</i>]};</code></td>
<td>Allows any object of primitive, aggregate or class
type to be initialized using brace syntax</td>
<td>TODO: documentation link</td>
<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/#!topic/chromium-dev/GF96FshwHLw">Discussion thread</a></td>
</tr>
<tr> <tr>
<td>UTF-16 and UTF-32 Support (16-Bit and 32-Bit Character Types)</td> <td>UTF-16 and UTF-32 Support (16-Bit and 32-Bit Character Types)</td>
<td><code>char16_t</code> and <code>char32_t</code></td> <td><code>char16_t</code> and <code>char32_t</code></td>
...@@ -305,16 +342,6 @@ C++11 generalized attributes</a></td> ...@@ -305,16 +342,6 @@ C++11 generalized attributes</a></td>
<td></td> <td></td>
</tr> </tr>
<tr>
<td>Declared Type Accessor</td>
<td><code>decltype(<i>expression</i>)</code></td>
<td>Provides a means to determine the type of an expression at compile-time,
useful most often in templates.</td>
<td><a href="http://en.cppreference.com/w/cpp/language/decltype">
decltype specifier</a></td>
<td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/_zoNvZd_dSo">Discussion thread</a></td>
</tr>
<tr> <tr>
<td>Default Function Creation</td> <td>Default Function Creation</td>
<td><code><i>Function</i>(<i>arguments</i>) = default;</code></td> <td><code><i>Function</i>(<i>arguments</i>) = default;</code></td>
...@@ -366,15 +393,6 @@ synthetic function such as a copy constructor</td> ...@@ -366,15 +393,6 @@ synthetic function such as a copy constructor</td>
<td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/i1o7-RNRnMs">Discussion thread</a></td> <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/i1o7-RNRnMs">Discussion thread</a></td>
</tr> </tr>
<tr>
<td>(Uniform) Initialization Syntax</td>
<td><code><i>type</i> <i>name</i> { [<i>value</i> ..., <i>value</i>]};</code></td>
<td>Allows any object of primitive, aggregate or class
type to be initialized using brace syntax</td>
<td>TODO: documentation link</td>
<td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/GF96FshwHLw">Discussion thread</a></td>
</tr>
<tr> <tr>
<td>Inline Namespaces</td> <td>Inline Namespaces</td>
<td><code>inline</code></td> <td><code>inline</code></td>
...@@ -391,15 +409,6 @@ type to be initialized using brace syntax</td> ...@@ -391,15 +409,6 @@ type to be initialized using brace syntax</td>
<td>No default captures (<a href="https://google-styleguide.googlecode.com/svn/trunk/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></td> <td>No default captures (<a href="https://google-styleguide.googlecode.com/svn/trunk/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></td>
</tr> </tr>
<tr>
<td><code>long long</code> Type</td>
<td><code>long long <i>var</i>= <i>value</i>;</code></td>
<td>An integer of at least 64 bits</td>
<td><a href="http://en.cppreference.com/w/cpp/language/types">
Fundamental types</a></td>
<td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/RxugZ-pIDxk">Discussion thread</a></td>
</tr>
<tr> <tr>
<td>Non-Static Class Member Initializers</td> <td>Non-Static Class Member Initializers</td>
<td> <td>
...@@ -414,15 +423,6 @@ Non-static data members</a></td> ...@@ -414,15 +423,6 @@ Non-static data members</a></td>
<td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/zqB-DySA4V0">Discussion thread</a></td> <td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/zqB-DySA4V0">Discussion thread</a></td>
</tr> </tr>
<tr>
<td>Raw String Literals</td>
<td><code>string <i>var</i>=R&quot;(<i>raw_string</i>)&quot;;</code></td>
<td>Allows a string to be encoded without any escape
sequences, easing parsing in regex expressions, for example</td>
<td>TODO: documentation link</td>
<td><a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/2kWQHbbuMHI">Discussion thread</a></td>
</tr>
<tr> <tr>
<td>Union Class Members</td> <td>Union Class Members</td>
<td><code>union <i>name</i> { <i>class</i> <i>var</i>}</code></td> <td><code>union <i>name</i> { <i>class</i> <i>var</i>}</code></td>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment