| 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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 <td>Recommended to increase readability. Approved without discussion.</td> | 73 <td>Recommended to increase readability. Approved without discussion.</td> |
| 74 </tr> | 74 </tr> |
| 75 | 75 |
| 76 <tr> | 76 <tr> |
| 77 <td>Automatic Types</td> | 77 <td>Automatic Types</td> |
| 78 <td><code>auto</code></td> | 78 <td><code>auto</code></td> |
| 79 <td>Automatic type deduction</td> | 79 <td>Automatic type deduction</td> |
| 80 <td><a href="http://en.cppreference.com/w/cpp/language/auto"> | 80 <td><a href="http://en.cppreference.com/w/cpp/language/auto"> |
| 81 auto specifier</a></td> | 81 auto specifier</a></td> |
| 82 <td>Use according to the <a | 82 <td>Use according to the <a |
| 83 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#auto">Goo
gle | 83 href="https://google.github.io/styleguide/cppguide.html#auto">Google |
| 84 Style Guide on <code>auto</code></a>. <a href="https://groups.google.com/a/chrom
ium.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> | 84 Style Guide on <code>auto</code></a>. <a href="https://groups.google.com/a/chrom
ium.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> |
| 85 </tr> | 85 </tr> |
| 86 | 86 |
| 87 <tr> | 87 <tr> |
| 88 <td>Declared Type Accessor</td> | 88 <td>Declared Type Accessor</td> |
| 89 <td><code>decltype(<i>expression</i>)</code></td> | 89 <td><code>decltype(<i>expression</i>)</code></td> |
| 90 <td>Provides a means to determine the type of an expression at compile-time, | 90 <td>Provides a means to determine the type of an expression at compile-time, |
| 91 useful most often in templates.</td> | 91 useful most often in templates.</td> |
| 92 <td><a href="http://en.cppreference.com/w/cpp/language/decltype"> | 92 <td><a href="http://en.cppreference.com/w/cpp/language/decltype"> |
| 93 decltype specifier</a></td> | 93 decltype specifier</a></td> |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 | 148 |
| 149 <tr> | 149 <tr> |
| 150 <td>Lambda Expressions</td> | 150 <td>Lambda Expressions</td> |
| 151 <td><code>[<i>captures</i>](<i>params</i>) -> <i>ret</i> { <i>body</i> }</cod
e></td> | 151 <td><code>[<i>captures</i>](<i>params</i>) -> <i>ret</i> { <i>body</i> }</cod
e></td> |
| 152 <td>Anonymous functions</td> | 152 <td>Anonymous functions</td> |
| 153 <td><a href="http://en.cppreference.com/w/cpp/language/lambda">Lambda functions<
/a></td> | 153 <td><a href="http://en.cppreference.com/w/cpp/language/lambda">Lambda functions<
/a></td> |
| 154 <td>Do not bind or store lambdas; use <code>base::Bind</code> and | 154 <td>Do not bind or store lambdas; use <code>base::Bind</code> and |
| 155 <code>base::Callback</code> instead, because they offer protection against a | 155 <code>base::Callback</code> instead, because they offer protection against a |
| 156 large class of object lifetime mistakes. Don't use default captures | 156 large class of object lifetime mistakes. Don't use default captures |
| 157 (<code>[=]</code>, <code>[&]</code> – <a | 157 (<code>[=]</code>, <code>[&]</code> – <a |
| 158 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Lambda_
expressions">Google Style Guide</a>). | 158 href="https://google.github.io/styleguide/cppguide.html#Lambda_expressions">Go
ogle Style Guide</a>). |
| 159 Lambdas are typically useful as a parameter to methods or | 159 Lambdas are typically useful as a parameter to methods or |
| 160 functions that will use them immediately, such as those in | 160 functions that will use them immediately, such as those in |
| 161 <code><algorithm></code>. <a | 161 <code><algorithm></code>. <a |
| 162 href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/D9Un
nxBnciQ">Discussion | 162 href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/D9Un
nxBnciQ">Discussion |
| 163 thread</a></td> | 163 thread</a></td> |
| 164 </tr> | 164 </tr> |
| 165 | 165 |
| 166 <tr> | 166 <tr> |
| 167 <td>Local Types as Template Arguments</td> | 167 <td>Local Types as Template Arguments</td> |
| 168 <td></td> | 168 <td></td> |
| 169 <td>Allows local and unnamed types as template arguments</td> | 169 <td>Allows local and unnamed types as template arguments</td> |
| 170 <td><a href="http://stackoverflow.com/questions/742607/using-local-classes-with-
stl-algorithms"> | 170 <td><a href="http://stackoverflow.com/questions/742607/using-local-classes-with-
stl-algorithms"> |
| 171 Local types, types without linkage and unnamed types as template arguments</a></
td> | 171 Local types, types without linkage and unnamed types as template arguments</a></
td> |
| 172 <td>Usage should be rare. Approved without discussion.</td> | 172 <td>Usage should be rare. Approved without discussion.</td> |
| 173 </tr> | 173 </tr> |
| 174 | 174 |
| 175 <tr> | 175 <tr> |
| 176 <td>Non-Static Class Member Initializers</td> | 176 <td>Non-Static Class Member Initializers</td> |
| 177 <td> | 177 <td> |
| 178 <code> | 178 <code> |
| 179 class C {<br /> | 179 class C {<br /> |
| 180 <i>type</i> <i>var</i> = <i>value</i>;<br/> | 180 <i>type</i> <i>var</i> = <i>value</i>;<br/> |
| 181 C() // copy-initializes <i>var</i><br/> | 181 C() // copy-initializes <i>var</i><br/> |
| 182 </code> | 182 </code> |
| 183 <td>Allows non-static class members to be initialized at their definitions (outs
ide constructors)</td> | 183 <td>Allows non-static class members to be initialized at their definitions (outs
ide constructors)</td> |
| 184 <td><a href="http://en.cppreference.com/w/cpp/language/data_members"> | 184 <td><a href="http://en.cppreference.com/w/cpp/language/data_members"> |
| 185 Non-static data members</a></td> | 185 Non-static data members</a></td> |
| 186 <td><a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#In
itialization">Google | 186 <td> |
| 187 Style Guide</a>. | |
| 188 <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/zqB
-DySA4V0">Discussion thread</a> | 187 <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/zqB
-DySA4V0">Discussion thread</a> |
| 189 </td> | 188 </td> |
| 190 </tr> | 189 </tr> |
| 191 | 190 |
| 192 <tr> | 191 <tr> |
| 193 <td>Null Pointer Constant</td> | 192 <td>Null Pointer Constant</td> |
| 194 <td><code>nullptr</code></td> | 193 <td><code>nullptr</code></td> |
| 195 <td>Declares a type-safe null pointer</td> | 194 <td>Declares a type-safe null pointer</td> |
| 196 <td><a href="http://en.cppreference.com/w/cpp/language/nullptr"> | 195 <td><a href="http://en.cppreference.com/w/cpp/language/nullptr"> |
| 197 nullptr</a></td> | 196 nullptr</a></td> |
| 198 <td>Recommended for new code. | 197 <td>Recommended for new code. |
| 199 <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/4mi
jeJHzxLg">Discussion thread</a>. | 198 <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/4mi
jeJHzxLg">Discussion thread</a>. |
| 200 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#0_and_
nullptr/NULL">Google Style Guide</a>. | 199 <a href="https://google.github.io/styleguide/cppguide.html#0_and_nullptr/NULL">G
oogle Style Guide</a>. |
| 201 <code>std::nullptr_t</code> can be used too. | 200 <code>std::nullptr_t</code> can be used too. |
| 202 </td> | 201 </td> |
| 203 </tr> | 202 </tr> |
| 204 | 203 |
| 205 <tr> | 204 <tr> |
| 206 <td>Override Specifier</td> | 205 <td>Override Specifier</td> |
| 207 <td><code>override</code></td> | 206 <td><code>override</code></td> |
| 208 <td>Indicates that a class or function overrides a base implementation</td> | 207 <td>Indicates that a class or function overrides a base implementation</td> |
| 209 <td><a href="http://en.cppreference.com/w/cpp/language/override">override Langua
ge Reference</a></td> | 208 <td><a href="http://en.cppreference.com/w/cpp/language/override">override Langua
ge Reference</a></td> |
| 210 <td>Recommended for new code. Existing uses of the <code>OVERRIDE</code> macro w
ill be <a href="https://crbug.com/417463">replaced throughout the codebase</a>.
<a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/VTN
ZzizN0zo">Discussion</a></td> | 209 <td>Recommended for new code. Existing uses of the <code>OVERRIDE</code> macro w
ill be <a href="https://crbug.com/417463">replaced throughout the codebase</a>.
<a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/VTN
ZzizN0zo">Discussion</a></td> |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 <th style='width:240px;'>Notes</th> | 304 <th style='width:240px;'>Notes</th> |
| 306 </tr> | 305 </tr> |
| 307 | 306 |
| 308 <tr> | 307 <tr> |
| 309 <td>Constant Expressions</td> | 308 <td>Constant Expressions</td> |
| 310 <td><code>constexpr</code></td> | 309 <td><code>constexpr</code></td> |
| 311 <td>Compile-time constant expressions</td> | 310 <td>Compile-time constant expressions</td> |
| 312 <td><a href="http://en.cppreference.com/w/cpp/language/constexpr"> | 311 <td><a href="http://en.cppreference.com/w/cpp/language/constexpr"> |
| 313 constexpr specifier</a></td> | 312 constexpr specifier</a></td> |
| 314 <td>Doesn't work in MSVS2013. Reevalute once it does. <a | 313 <td>Doesn't work in MSVS2013. Reevalute once it does. <a |
| 315 href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Use_of_co
nstexpr">Google | 314 href="https://google.github.io/styleguide/cppguide.html#Use_of_constexpr">Google |
| 316 Style Guide on <code>constexpr</code></a></td> | 315 Style Guide on <code>constexpr</code></a></td> |
| 317 </tr> | 316 </tr> |
| 318 | 317 |
| 319 <tr> | 318 <tr> |
| 320 <td>Explicit Conversion Operators</td> | 319 <td>Explicit Conversion Operators</td> |
| 321 <td><code>explicit operator <i>type</i>() { | 320 <td><code>explicit operator <i>type</i>() { |
| 322 <br /> // code<br /> }</code></td> | 321 <br /> // code<br /> }</code></td> |
| 323 <td>Allows conversion operators that cannot be implicitly invoked</td> | 322 <td>Allows conversion operators that cannot be implicitly invoked</td> |
| 324 <td><a href="http://en.cppreference.com/w/cpp/language/explicit"> | 323 <td><a href="http://en.cppreference.com/w/cpp/language/explicit"> |
| 325 explicit specifier</a></td> | 324 explicit specifier</a></td> |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 387 <tr> | 386 <tr> |
| 388 <td>UTF-16 and UTF-32 Support (16-Bit and 32-Bit Character Types)</td> | 387 <td>UTF-16 and UTF-32 Support (16-Bit and 32-Bit Character Types)</td> |
| 389 <td><code>char16_t</code> and <code>char32_t</code></td> | 388 <td><code>char16_t</code> and <code>char32_t</code></td> |
| 390 <td>Provides character types for handling 16-bit | 389 <td>Provides character types for handling 16-bit |
| 391 and 32-bit code units (useful for encoding | 390 and 32-bit code units (useful for encoding |
| 392 UTF-16 and UTF-32 string data)</td> | 391 UTF-16 and UTF-32 string data)</td> |
| 393 <td><a href="http://en.cppreference.com/w/cpp/language/types"> | 392 <td><a href="http://en.cppreference.com/w/cpp/language/types"> |
| 394 Fundamental types</a></td> | 393 Fundamental types</a></td> |
| 395 <td>Doesn't work in MSVS2013. Reevaluate once it does. Non-UTF-8 text is | 394 <td>Doesn't work in MSVS2013. Reevaluate once it does. Non-UTF-8 text is |
| 396 banned by the | 395 banned by the |
| 397 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Non-AS
CII_Characters"> | 396 <a href="https://google.github.io/styleguide/cppguide.html#Non-ASCII_Characters"
> |
| 398 C++ Style Guide</a>. However, may be useful for | 397 C++ Style Guide</a>. However, may be useful for |
| 399 consuming non-ASCII data. <a href="https://groups.google.com/a/chromium.org/foru
m/#!topic/chromium-dev/ME2kL7_Kvyk">Discussion thread</a></td> | 398 consuming non-ASCII data. <a href="https://groups.google.com/a/chromium.org/foru
m/#!topic/chromium-dev/ME2kL7_Kvyk">Discussion thread</a></td> |
| 400 </tr> | 399 </tr> |
| 401 | 400 |
| 402 <tr> | 401 <tr> |
| 403 <td>UTF-8, UTF-16, UTF-32 String Literals</td> | 402 <td>UTF-8, UTF-16, UTF-32 String Literals</td> |
| 404 <td><code>u8"<i>string</i>", u"<i>string</i>", U"<i>str
ing</i>"</code></td> | 403 <td><code>u8"<i>string</i>", u"<i>string</i>", U"<i>str
ing</i>"</code></td> |
| 405 <td>Enforces UTF-8, UTF-16, UTF-32 encoding on all string literals</td> | 404 <td>Enforces UTF-8, UTF-16, UTF-32 encoding on all string literals</td> |
| 406 <td><a href="http://en.cppreference.com/w/cpp/language/string_literal"> | 405 <td><a href="http://en.cppreference.com/w/cpp/language/string_literal"> |
| 407 string literal</a></td> | 406 string literal</a></td> |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 | 504 |
| 506 <tr> | 505 <tr> |
| 507 <td>Exception Features</td> | 506 <td>Exception Features</td> |
| 508 <td><code>noexcept</code>, <code>exception_ptr</code>, | 507 <td><code>noexcept</code>, <code>exception_ptr</code>, |
| 509 <code>current_exception()</code>, <code>rethrow_exception</code>, | 508 <code>current_exception()</code>, <code>rethrow_exception</code>, |
| 510 and <code>nested_exception</code></td> | 509 and <code>nested_exception</code></td> |
| 511 <td>Enhancements to exception throwing and handling</td> | 510 <td>Enhancements to exception throwing and handling</td> |
| 512 <td><a href="http://en.cppreference.com/w/cpp/error/exception"> | 511 <td><a href="http://en.cppreference.com/w/cpp/error/exception"> |
| 513 std::exception</a></td> | 512 std::exception</a></td> |
| 514 <td>Exceptions are banned by the | 513 <td>Exceptions are banned by the |
| 515 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Except
ions"> C++ Style Guide</a>. <a href="https://groups.google.com/a/chromium.org/fo
rum/#!topic/chromium-dev/8i4tMqNpHhg">Discussion thread</a></td> | 514 <a href="https://google.github.io/styleguide/cppguide.html#Exceptions"> C++ Styl
e Guide</a>. <a href="https://groups.google.com/a/chromium.org/forum/#!topic/chr
omium-dev/8i4tMqNpHhg">Discussion thread</a></td> |
| 516 </tr> | 515 </tr> |
| 517 | 516 |
| 518 <tr> | 517 <tr> |
| 519 <td>Inline Namespaces</td> | 518 <td>Inline Namespaces</td> |
| 520 <td><code>inline</code></td> | 519 <td><code>inline</code></td> |
| 521 <td>Allows better versioning of namespaces</td> | 520 <td>Allows better versioning of namespaces</td> |
| 522 <td><a href="http://en.cppreference.com/w/cpp/language/namespace">Namespaces</a>
</td> | 521 <td><a href="http://en.cppreference.com/w/cpp/language/namespace">Namespaces</a>
</td> |
| 523 <td>Unclear how it will work with components</td> | 522 <td>Unclear how it will work with components</td> |
| 524 </tr> | 523 </tr> |
| 525 | 524 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 <th style='width:240px;'>Documentation Link</th> | 566 <th style='width:240px;'>Documentation Link</th> |
| 568 <th style='width:240px;'>Style Guide Usage</th> | 567 <th style='width:240px;'>Style Guide Usage</th> |
| 569 </tr> | 568 </tr> |
| 570 | 569 |
| 571 <tr> | 570 <tr> |
| 572 <td>Address Retrieval</td> | 571 <td>Address Retrieval</td> |
| 573 <td><code>std::addressof()</code></td> | 572 <td><code>std::addressof()</code></td> |
| 574 <td>Obtains the address of an object even with overloaded <code>operator&</c
ode></td> | 573 <td>Obtains the address of an object even with overloaded <code>operator&</c
ode></td> |
| 575 <td><a href="http://en.cppreference.com/w/cpp/memory/addressof">std::addressof</
a></td> | 574 <td><a href="http://en.cppreference.com/w/cpp/memory/addressof">std::addressof</
a></td> |
| 576 <td>Usage should be rare as | 575 <td>Usage should be rare as |
| 577 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Operat
or_Overloading"> | 576 <a href="https://google.github.io/styleguide/cppguide.html#Operator_Overloading"
> |
| 578 Operator Overloading</a> is rare and <code>&s;</code> | 577 Operator Overloading</a> is rare and <code>&s;</code> |
| 579 should suffice in most cases. May be preferable | 578 should suffice in most cases. May be preferable |
| 580 over <code>&s;</code> for performing object | 579 over <code>&s;</code> for performing object |
| 581 identity checks.</td> | 580 identity checks.</td> |
| 582 </tr> | 581 </tr> |
| 583 | 582 |
| 584 <tr> | 583 <tr> |
| 585 <td>Aligned Storage</td> | 584 <td>Aligned Storage</td> |
| 586 <td><code>std::aligned_storage<Size, Align>::type</code> | 585 <td><code>std::aligned_storage<Size, Align>::type</code> |
| 587 <code>std::alignment_of<T></code>, | 586 <code>std::alignment_of<T></code>, |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 849 <td><a href="http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=
217"> | 848 <td><a href="http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=
217"> |
| 850 Reference Wrappers</a></td> | 849 Reference Wrappers</a></td> |
| 851 <td></td> | 850 <td></td> |
| 852 </tr> | 851 </tr> |
| 853 | 852 |
| 854 <tr> | 853 <tr> |
| 855 <td>Shared Pointers</td> | 854 <td>Shared Pointers</td> |
| 856 <td><code>std::shared_ptr</code></td> | 855 <td><code>std::shared_ptr</code></td> |
| 857 <td>Allows shared ownership of a pointer through reference counts</td> | 856 <td>Allows shared ownership of a pointer through reference counts</td> |
| 858 <td><a href="http://en.cppreference.com/w/cpp/memory/shared_ptr">std::shared_ptr
</a></td> | 857 <td><a href="http://en.cppreference.com/w/cpp/memory/shared_ptr">std::shared_ptr
</a></td> |
| 859 <td><a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Ow
nership_and_Smart_Pointers"> | 858 <td><a href="https://google.github.io/styleguide/cppguide.html#Ownership_and_Sma
rt_Pointers"> |
| 860 Ownership and Smart Pointers</a></td> | 859 Ownership and Smart Pointers</a></td> |
| 861 </tr> | 860 </tr> |
| 862 | 861 |
| 863 <tr> | 862 <tr> |
| 864 <td>Soft Program Exits</td> | 863 <td>Soft Program Exits</td> |
| 865 <td><code>std::at_quick_exit()</code> | 864 <td><code>std::at_quick_exit()</code> |
| 866 and <code>std::quick_exit()</code></td> | 865 and <code>std::quick_exit()</code></td> |
| 867 <td>Allows registration of functions to be called upon exit, | 866 <td>Allows registration of functions to be called upon exit, |
| 868 allowing cleaner program exit than <code>abort()</code> or | 867 allowing cleaner program exit than <code>abort()</code> or |
| 869 <code>exit</code></td> | 868 <code>exit</code></td> |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 964 <td><a href="http://en.cppreference.com/w/cpp/header/type_traits"> | 963 <td><a href="http://en.cppreference.com/w/cpp/header/type_traits"> |
| 965 Standard library header <type_traits></a></td> | 964 Standard library header <type_traits></a></td> |
| 966 <td></td> | 965 <td></td> |
| 967 </tr> | 966 </tr> |
| 968 | 967 |
| 969 <tr> | 968 <tr> |
| 970 <td>Unique Pointers</td> | 969 <td>Unique Pointers</td> |
| 971 <td><code>std::unique_ptr<<i>type</i>></code></td> | 970 <td><code>std::unique_ptr<<i>type</i>></code></td> |
| 972 <td>Defines a pointer with clear and unambiguous ownership</td> | 971 <td>Defines a pointer with clear and unambiguous ownership</td> |
| 973 <td>TODO: documentation link</td> | 972 <td>TODO: documentation link</td> |
| 974 <td><a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Ow
nership_and_Smart_Pointers"> | 973 <td><a href="https://google.github.io/styleguide/cppguide.html#Ownership_and_Sma
rt_Pointers"> |
| 975 Ownership and Smart Pointers</a></td> | 974 Ownership and Smart Pointers</a></td> |
| 976 </tr> | 975 </tr> |
| 977 | 976 |
| 978 <tr> | 977 <tr> |
| 979 <td>Unordered Associative Containers</td> | 978 <td>Unordered Associative Containers</td> |
| 980 <td><code>std::unordered_set</code>, <code>std::unordered_map</code>, | 979 <td><code>std::unordered_set</code>, <code>std::unordered_map</code>, |
| 981 <code>std::unordered_multiset</code>, and <code>std::unordered_multimap</code></
td> | 980 <code>std::unordered_multiset</code>, and <code>std::unordered_multimap</code></
td> |
| 982 <td>Allows efficient containers of key/value pairs</td> | 981 <td>Allows efficient containers of key/value pairs</td> |
| 983 <td><a href="http://en.cppreference.com/w/cpp/container/unordered_map">std::unor
dered_map</a> | 982 <td><a href="http://en.cppreference.com/w/cpp/container/unordered_map">std::unor
dered_map</a> |
| 984 and <a href="http://en.cppreference.com/w/cpp/container/unordered_set">std::unor
dered_set</a> | 983 and <a href="http://en.cppreference.com/w/cpp/container/unordered_set">std::unor
dered_set</a> |
| 985 </td> | 984 </td> |
| 986 <td></td> | 985 <td></td> |
| 987 </tr> | 986 </tr> |
| 988 | 987 |
| 989 <tr> | 988 <tr> |
| 990 <td>Variadic Copy Macro</td> | 989 <td>Variadic Copy Macro</td> |
| 991 <td><code>va_copy(va_list <i>dest</i>, va_list <i>src</i>)</code></td> | 990 <td><code>va_copy(va_list <i>dest</i>, va_list <i>src</i>)</code></td> |
| 992 <td>Makes a copy of the variadic function arguments</td> | 991 <td>Makes a copy of the variadic function arguments</td> |
| 993 <td></td> | 992 <td></td> |
| 994 <td></td> | 993 <td></td> |
| 995 </tr> | 994 </tr> |
| 996 | 995 |
| 997 <tr> | 996 <tr> |
| 998 <td>Weak Pointers</td> | 997 <td>Weak Pointers</td> |
| 999 <td><code>std::weak_ptr</code></td> | 998 <td><code>std::weak_ptr</code></td> |
| 1000 <td>Allows a weak reference to a <code>std::shared_ptr</code></td> | 999 <td>Allows a weak reference to a <code>std::shared_ptr</code></td> |
| 1001 <td><a href="http://en.cppreference.com/w/cpp/memory/weak_ptr"> | 1000 <td><a href="http://en.cppreference.com/w/cpp/memory/weak_ptr"> |
| 1002 std::weak_ptr</a></td> | 1001 std::weak_ptr</a></td> |
| 1003 <td><a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Ow
nership_and_Smart_Pointers"> | 1002 <td><a href="https://google.github.io/styleguide/cppguide.html#Ownership_and_Sma
rt_Pointers"> |
| 1004 Ownership and Smart Pointers</a></td> | 1003 Ownership and Smart Pointers</a></td> |
| 1005 </tr> | 1004 </tr> |
| 1006 | 1005 |
| 1007 <tr> | 1006 <tr> |
| 1008 <td>Wide String Support</td> | 1007 <td>Wide String Support</td> |
| 1009 <td><code>std::wstring_convert</code>, | 1008 <td><code>std::wstring_convert</code>, |
| 1010 <code>std::wbuffer_convert</code>. | 1009 <code>std::wbuffer_convert</code>. |
| 1011 <code>std::codecvt_utf8</code>, <code>std::codecvt_utf16</code>, | 1010 <code>std::codecvt_utf8</code>, <code>std::codecvt_utf16</code>, |
| 1012 and <code>std::codecvt_utf8_utf16</code></td> | 1011 and <code>std::codecvt_utf8_utf16</code></td> |
| 1013 <td>Converts between string encodings</td> | 1012 <td>Converts between string encodings</td> |
| 1014 <td><a href="http://en.cppreference.com/w/cpp/locale/wstring_convert"> | 1013 <td><a href="http://en.cppreference.com/w/cpp/locale/wstring_convert"> |
| 1015 std::wstring_convert</a>, | 1014 std::wstring_convert</a>, |
| 1016 <a href="http://en.cppreference.com/w/cpp/locale/wbuffer_convert"> | 1015 <a href="http://en.cppreference.com/w/cpp/locale/wbuffer_convert"> |
| 1017 std::wbuffer_convert</a>, | 1016 std::wbuffer_convert</a>, |
| 1018 <a href="http://en.cppreference.com/w/cpp/locale/codecvt_utf8"> | 1017 <a href="http://en.cppreference.com/w/cpp/locale/codecvt_utf8"> |
| 1019 std::codecvt_utf8</a>, | 1018 std::codecvt_utf8</a>, |
| 1020 <a href="http://en.cppreference.com/w/cpp/locale/codecvt_utf16"> | 1019 <a href="http://en.cppreference.com/w/cpp/locale/codecvt_utf16"> |
| 1021 std::codecvt_utf16</a>, and | 1020 std::codecvt_utf16</a>, and |
| 1022 <a href="http://en.cppreference.com/w/cpp/locale/codecvt_utf8_utf16"> | 1021 <a href="http://en.cppreference.com/w/cpp/locale/codecvt_utf8_utf16"> |
| 1023 std::codecvt_utf8_utf16</a> | 1022 std::codecvt_utf8_utf16</a> |
| 1024 </td> | 1023 </td> |
| 1025 <td>Non-UTF-8 text is banned by the | 1024 <td>Non-UTF-8 text is banned by the |
| 1026 <a href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Non-AS
CII_Characters"> | 1025 <a href="https://google.github.io/styleguide/cppguide.html#Non-ASCII_Characters"
> |
| 1027 C++ Style Guide</a>. However, may be useful for | 1026 C++ Style Guide</a>. However, may be useful for |
| 1028 consuming non-ASCII data.</td> | 1027 consuming non-ASCII data.</td> |
| 1029 </tr> | 1028 </tr> |
| 1030 | 1029 |
| 1031 </tbody> | 1030 </tbody> |
| 1032 </table> | 1031 </table> |
| 1033 | 1032 |
| 1034 </div> | 1033 </div> |
| 1035 </body> | 1034 </body> |
| 1036 </html> | 1035 </html> |
| OLD | NEW |