| OLD | NEW |
| 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 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 <code>is_const</code>, <code>is_pod</code>, <code>is_unsigned</code><br/> | 461 <code>is_const</code>, <code>is_pod</code>, <code>is_unsigned</code><br/> |
| 462 <code>is_default_constructible</code>, <code>is_move_constructible</code>, <code
>is_copy_assignable</code><br/> | 462 <code>is_default_constructible</code>, <code>is_move_constructible</code>, <code
>is_copy_assignable</code><br/> |
| 463 <code>enable_if</code>, <code>conditional</code>, <code>result_of</code><br/> | 463 <code>enable_if</code>, <code>conditional</code>, <code>result_of</code><br/> |
| 464 </td> | 464 </td> |
| 465 <td>Allows compile-time inspection of the properties of types</td> | 465 <td>Allows compile-time inspection of the properties of types</td> |
| 466 <td><a href="http://en.cppreference.com/w/cpp/header/type_traits"><type_trait
s></a></td> | 466 <td><a href="http://en.cppreference.com/w/cpp/header/type_traits"><type_trait
s></a></td> |
| 467 <td>Note that not all type traits are available on all platforms (eg std::underl
ying_type doesn't work in libstdc++4.6). Use judiciously. <a href='https://group
s.google.com/a/chromium.org/forum/#!topic/cxx/vCxo4tZNd_M'>Discussion thread</a>
</td> | 467 <td>Note that not all type traits are available on all platforms (eg std::underl
ying_type doesn't work in libstdc++4.6). Use judiciously. <a href='https://group
s.google.com/a/chromium.org/forum/#!topic/cxx/vCxo4tZNd_M'>Discussion thread</a>
</td> |
| 468 </tr> | 468 </tr> |
| 469 | 469 |
| 470 <tr> | 470 <tr> |
| 471 <td>Tuples</td> |
| 472 <td><code>std::tuple</code></td> |
| 473 <td>A fixed-size ordered collection of values of mixed types</td> |
| 474 <td><a href="http://en.cppreference.com/w/cpp/utility/tuple">std::tuple</a></td> |
| 475 <td><a href="https://crbug.com/554987">Tracking bug</a> to plan moving from <cod
e>base::Tuple</code> to <code>std::tuple</code>. See also <code>std::tie</code>. |
| 476 <code>base::Tuple</code> is now an alias for <code>std::tuple</code>. In class t
emplate specializations, use <code>std::tuple</code> instead of <code>base::Tupl
e</code> to work around a MSVS2013 internal compiler error (Error code: C1001). |
| 477 </td> |
| 478 </tr> |
| 479 |
| 480 <tr> |
| 471 <td>Unordered Associative Containers</td> | 481 <td>Unordered Associative Containers</td> |
| 472 <td><code>std::unordered_set</code>, <code>std::unordered_map</code>, | 482 <td><code>std::unordered_set</code>, <code>std::unordered_map</code>, |
| 473 <code>std::unordered_multiset</code>, and <code>std::unordered_multimap</code></
td> | 483 <code>std::unordered_multiset</code>, and <code>std::unordered_multimap</code></
td> |
| 474 <td>Allows efficient containers of key/value pairs</td> | 484 <td>Allows efficient containers of key/value pairs</td> |
| 475 <td><a href="http://en.cppreference.com/w/cpp/container/unordered_map">std::unor
dered_map</a> | 485 <td><a href="http://en.cppreference.com/w/cpp/container/unordered_map">std::unor
dered_map</a> |
| 476 and <a href="http://en.cppreference.com/w/cpp/container/unordered_set">std::unor
dered_set</a> | 486 and <a href="http://en.cppreference.com/w/cpp/container/unordered_set">std::unor
dered_set</a> |
| 477 </td> | 487 </td> |
| 478 <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>st
d::hash</code> for custom types. <a href="https://groups.google.com/a/chromium.o
rg/forum/#!topic/cxx/nCdjQqnouO4">Discussion thread</a>.</td> | 488 <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>st
d::hash</code> for custom types. <a href="https://groups.google.com/a/chromium.o
rg/forum/#!topic/cxx/nCdjQqnouO4">Discussion thread</a>.</td> |
| 479 </tr> | 489 </tr> |
| 480 | 490 |
| 481 <tr> | 491 <tr> |
| 482 <td>Tuples</td> | 492 <td>Unique Pointers</td> |
| 483 <td><code>std::tuple</code></td> | 493 <td><code>std::unique_ptr<<i>type</i>></code></td> |
| 484 <td>A fixed-size ordered collection of values of mixed types</td> | 494 <td>A smart pointer with sole ownership of the owned object.</td> |
| 485 <td><a href="http://en.cppreference.com/w/cpp/utility/tuple">std::tuple</a></td> | 495 <td><a href="http://en.cppreference.com/w/cpp/memory/unique_ptr">std::unique_ptr
</a></td> |
| 486 <td><a href="https://crbug.com/554987">Tracking bug</a> to plan moving from <cod
e>base::Tuple</code> to <code>std::tuple</code>. See also <code>std::tie</code>. | 496 <td>Google style guide: <a href="https://google.github.io/styleguide/cppguide.ht
ml#Ownership_and_Smart_Pointers">Ownership and Smart Pointers</a>. <a href="http
s://groups.google.com/a/chromium.org/d/msg/cxx/aT2wsBLKvzI/oZuZ718oAwAJ">Discuss
ion thread</a>. Use in all newly written code. scoped_ptr is a <a href="https://
groups.google.com/a/chromium.org/d/msg/chromium-dev/roY78iTblYc/bb8nYsxfCgAJ">ty
pedef for std::unique_ptr</a> and is going away shortly.</td> |
| 487 <code>base::Tuple</code> is now an alias for <code>std::tuple</code>. In class t
emplate specializations, use <code>std::tuple</code> instead of <code>base::Tupl
e</code> to work around a MSVS2013 internal compiler error (Error code: C1001). | |
| 488 </td> | |
| 489 </tr> | 497 </tr> |
| 490 | 498 |
| 491 </tbody> | 499 </tbody> |
| 492 </table> | 500 </table> |
| 493 | 501 |
| 494 <h2 id="blacklist">C++11 Blacklist (Disallowed and Banned Features)</h2> | 502 <h2 id="blacklist">C++11 Blacklist (Disallowed and Banned Features)</h2> |
| 495 | 503 |
| 496 <p>This section lists features that are not allowed to be used yet. | 504 <p>This section lists features that are not allowed to be used yet. |
| 497 | 505 |
| 498 <h3 id="blacklist_banned"><a name="core-blacklist"></a>C++11 Banned Features</h3
> | 506 <h3 id="blacklist_banned"><a name="core-blacklist"></a>C++11 Banned Features</h3
> |
| (...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1053 <td><a href="http://en.cppreference.com/w/cpp/types/type_index"> | 1061 <td><a href="http://en.cppreference.com/w/cpp/types/type_index"> |
| 1054 std::type_index</a> and | 1062 std::type_index</a> and |
| 1055 <a href="http://en.cppreference.com/w/cpp/types/type_info/hash_code"> | 1063 <a href="http://en.cppreference.com/w/cpp/types/type_info/hash_code"> |
| 1056 std::type_info::hash_code</a></td> | 1064 std::type_info::hash_code</a></td> |
| 1057 <td><code>std::type_index</code> is a thin wrapper for | 1065 <td><code>std::type_index</code> is a thin wrapper for |
| 1058 <code>std::type_info</code>, allowing you to use it directly | 1066 <code>std::type_info</code>, allowing you to use it directly |
| 1059 within both associative and unordered containers</td> | 1067 within both associative and unordered containers</td> |
| 1060 </tr> | 1068 </tr> |
| 1061 | 1069 |
| 1062 <tr> | 1070 <tr> |
| 1063 <td>Unique Pointers</td> | |
| 1064 <td><code>std::unique_ptr<<i>type</i>></code></td> | |
| 1065 <td>Defines a pointer with clear and unambiguous ownership</td> | |
| 1066 <td>TODO: documentation link</td> | |
| 1067 <td><a href="https://google.github.io/styleguide/cppguide.html#Ownership_and_Sma
rt_Pointers"> | |
| 1068 Ownership and Smart Pointers</a></td> | |
| 1069 </tr> | |
| 1070 | |
| 1071 <tr> | |
| 1072 <td>Variadic Copy Macro</td> | 1071 <td>Variadic Copy Macro</td> |
| 1073 <td><code>va_copy(va_list <i>dest</i>, va_list <i>src</i>)</code></td> | 1072 <td><code>va_copy(va_list <i>dest</i>, va_list <i>src</i>)</code></td> |
| 1074 <td>Makes a copy of the variadic function arguments</td> | 1073 <td>Makes a copy of the variadic function arguments</td> |
| 1075 <td></td> | 1074 <td></td> |
| 1076 <td></td> | 1075 <td></td> |
| 1077 </tr> | 1076 </tr> |
| 1078 | 1077 |
| 1079 <tr> | 1078 <tr> |
| 1080 <td>Weak Pointers</td> | 1079 <td>Weak Pointers</td> |
| 1081 <td><code>std::weak_ptr</code></td> | 1080 <td><code>std::weak_ptr</code></td> |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1109 C++ Style Guide</a>. However, may be useful for | 1108 C++ Style Guide</a>. However, may be useful for |
| 1110 consuming non-ASCII data.</td> | 1109 consuming non-ASCII data.</td> |
| 1111 </tr> | 1110 </tr> |
| 1112 | 1111 |
| 1113 </tbody> | 1112 </tbody> |
| 1114 </table> | 1113 </table> |
| 1115 | 1114 |
| 1116 </div> | 1115 </div> |
| 1117 </body> | 1116 </body> |
| 1118 </html> | 1117 </html> |
| OLD | NEW |