• R/O
  • SSH

YSLib-wiki: Commit

The wiki source of YSLib documentation.


Commit MetaInfo

Revisión5bbe357f262732ed8adf7f5115fe715462f8a3e9 (tree)
Tiempo2021-12-24 22:10:44
AutorFrankHB <frankhb1989@gmai...>
CommiterFrankHB

Log Message

StandardUsing.en-US.md: Updated contents, with additional rules and the new standard edition ISO C++20.

Cambiar Resumen

Diferencia incremental

diff -r fe3c104b5abd -r 5bbe357f2627 StandardUsing.en-US.md
--- a/StandardUsing.en-US.md Fri Dec 24 21:10:25 2021 +0800
+++ b/StandardUsing.en-US.md Fri Dec 24 21:10:44 2021 +0800
@@ -61,10 +61,11 @@
6161
6262 The conformance of languages and environments used in this project is specified using published versions of standards and technicle specifications, as well as drafts and proposals. For purpose of specification in this project, all of them are designated as specifications.
6363
64-Several C++0x features are used since b206[2011-05-03]. These features are also in ISO C++11(ISO/IEC 14882:2011). Previously C++03 with TR1(ISO/IEC TR 19768:2007) was used. New version of ISO C++ and technicle specifications are also considered:
64+Several C++0x features are used since b206[2011-05-03]. These features are also in ISO C++11(ISO/IEC 14882:2011). Previously C++03 with TR1(ISO/IEC TR 19768:2007) was used. New versions of ISO C++ and technicle specifications are also considered:
6565
6666 * ISO C++14(ISO/IEC 14882:2014)
6767 * ISO C++17(ISO/IEC 14882:2017)
68+* ISO C++20(ISO/IEC 14882:2020)
6869
6970 ### Baseline
7071
@@ -90,9 +91,9 @@
9091
9192 Several features in specifications beyond C++11 is not directly relied on, but this project provides some replacements (possibly with some custom extensions) as features to ease the work about compatibility.
9293
93-Replacements are provided in a "(mostly) drop-in" manner, i.e. the base name of API are same, but with allowence of difference on qualified prefix and/or prefixe (of namespaces, mostly, to `std`; or of headers to be included). This allows user code replacing interface with a few alias declarations without changing of the program well-formedness and behavior. It is easy to change the underlying set of API as well as to pick a subset of them on purpose.
94+Replacements are provided in a "(mostly) drop-in" manner, i.e. the base name of API are same, but with allowence of difference on qualified prefix and/or prefixes (of namespaces, mostly, to `std`; or of headers to be included). This allows user code replacing interface with a few alias declarations without changing of the program well-formedness and behavior. It is easy to change the underlying set of API as well as to pick a subset of them on purpose.
9495
95-The replacements provided most compatibility are bidirectionally drop-in replaceable, which can be used interchangably with the features they replace, except the compatibility exceptions specified below. However, such replacements are not guaranteed to be mixed arbitrary with the feature being replacements. The granularity of mixture with guaranteed usablity is a type or a template with any related operations relying on the type signature derived from that entity, unless otherwise specificed in documentation.
96+The replacements provided are bidirectionally drop-in replaceable, which can be used interchangably with the features they replace, except the compatibility exceptions specified below. However, such replacements are not guaranteed to be mixed arbitrary with the feature being replacements. The granularity of mixture with guaranteed usablity is a type or a template with any related operations relying on the type signature derived from that entity, unless otherwise specificed in documentation.
9697
9798 Some of other replacements are ony-way drop-in replacements, i.e., guaranteed being able to replace the correspoinding features in specifications without changing of meaning but not the other way.
9899
@@ -100,18 +101,36 @@
100101
101102 Several features cannot be implemented portably due to ISO C++ core language features are not available in virous target environments (e.g. in the baseline).
102103
103-Emulation of (esp. core language) features involved such cases is limited, and it would be implemented in replacements with *best effort*. Corollary: such features are available **conditionally** depending on which language dialect is being used.
104+Emulation of (esp. core language) features involved such cases is limited, and it would be implemented in replacements with *best effort* when it is practibly implementatble.
104105
105-For cases where the replaced features cannot be implemented portably in the baseline, the limitations shall be documented on related interface with `\warning` command to inform users the existence of portability risks and the condition of availablity (i.e. which dialects it is guaranteed to work). To avoid frequent need, features totally unusable (e.g. features relying on variable templates) are not provided at all, thus only a few cases should be concerned.
106+**NOTE** If the core language in the baseline does not limit the feasibility, the replacements shall still be the drop-in replaceable.
107+
108+**Corollary** Features limited by the core language are available **conditionally** depending on which language dialect is being used.
109+
110+**NOTE** Extensions of specific language implementations may loose the limitations, but there are still no guarantees.
111+
112+For cases where the replaced features cannot be implemented portably in the baseline, the limitations shall be documented on related interface either with `\warning` command on each instances or with descriptions in the header including them, to inform users the existence of portability risks and the condition of availablity (i.e. which dialects it is guaranteed to work). To avoid frequent need, features totally unusable (e.g. features relying on variable templates) are not provided at all, thus only a few cases should be concerned.
106113
107114 Currently, compatibility limitations include:
108115
109-* To determine whether a class is declared with `final`.
116+* Availablilty of `constexpr` on functions and function templates may be limited, when the dialect of an earlier standard (before the edition of the standard requires them) is used.
117+ * As a result, operations relies on such replacements may not work in contexts requiring constant expressions.
118+ * Additional implementation support may improve the availability of `constexpr`.
119+ * **NOTE** Sometimes, compiler builtins may provide `constexpr` being implementable without the limitation even an earlier standard is used; sometimes there are just no such extensions.
120+ * Replacements of features beyond ISO C++20 shall have `constexpr` required by the interface, whenever they are implementable portably.
121+ * **Rationale** With `std::is_constant_evaluated` since C++20, different paths of implementations of portable C++ code are allowed, so reducing the quality specifically for contexts not requring constant expressions is not a problem.
122+ * If there are problems of implementation complexity of the replacments targeting before C++20 to meet the requirements of `constexpr` reducing the quality of the features used in the contexts not requiring constant expressions (e.g. expectable performance degration), `constexpr` may not be provided by design.
123+ * **Rationale** Before C++14, `constexpr` has extra limitations on the function body. To work with the baseline without additional implementation complexity, `inline` may be used instead of `constexpr`.
124+ * Whether the specialized implementation with `constexpr` provided for C++14 and higher edition of the language standard is unspecified.
125+ * **NOTE** Providing specialized implementations is a QoI (quality of implementation) issue. Typically, `constexpr` would be directly enabled when C++14 or some higher edition of the language standard is used.
126+ * Concrete instances missing `constexpr` are listed below.
127+ * `ystdex::addressof` may not have `constexpr` for specific types.
128+ * **NOTE** Even the type is complete, there is no guarantee to rule out user-defined overloaded `operator&` on the object.
129+ * In cases where `operator&` is used, C++11 provides `std::addressof` to get the correct result. However, it is not designated with `constexpr`, which is available portably only since C++17.
130+ * Replacements of features in `<bits>` (since C++20) may not have `constexpr`.
131+* To determine whether a class is declared with `final` may be impossible.
110132 * It is not implementable without some implementation support before C++14 introduces `std::is_final`.
111- * Note that `std::is_empty` are not implementable without such support. However, `std::is_empty` is provided by C++11 (in the baseline), so there shall be *no* limitation on determine whether a class is empty.
112-* To get pointer value to an object of arbitrary type in a `constant-expression`.
113- * Even the type is complete, there is no guarantee to rule out user-defined overloaded `operator&` on the object.
114- * In cases where `operator&` is used, C++11 provides `std::addressof` to get the correct result. However, it is not designated with `constexpr`, which is available portably only since C++17.
133+ * **NOTE** `std::is_empty` is not implementable in portable C++ without such support. However, `std::is_empty` is provided by C++11 (in the baseline), so there shall be *no* limitation on determine whether a class is empty.
115134
116135 For better compatibility to evolution, additional exceptions are granted here:
117136
@@ -320,7 +339,7 @@
320339 * [LWG 2800](http://wg21.link/lwg2800): `constexpr` `swap`
321340 The following issues are being waiting to be resolved (and then be reviewed here) formally in public standards.
322341 * [N4792](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4792.html)
323- * LWG motion 13: [P0318R1 "`unwrap_ref_decay` and `unwrap_reference`"](http://wg21.link/p0318r1)
342+ * LWG motion 13: [P0318R1 "`unwrap_ref_decay` and `unwrap_reference`"](http://wg21.link/p0318r1)
324343 * LWG motion 21: [P0591R4 "Utility functions to implement uses-allocator construction"](http://wg21.link/p0591r4)
325344 * [CWG 943](http://wg21.cmeerw.net/cwg/issue943): Is `T()` a temporary?
326345 * **NOTE** see also [P0135R0](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0135r0.html)
@@ -424,7 +443,7 @@
424443 * [LWG 2755](https://wg21.cmeerw.net/lwg/issue2755): §[string.view.io] uses non-existent `basic_string_view::to_string` function
425444 * [N2775](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2775.htm): Small library thread-safety revisions
426445 * [N3066](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3066.html): Iterators in C++0x
427-* [N3966](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3966.html): Fixes for `optional` objects (revised as [N4078](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4078.html))
446+* [N3966](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3966.html): Fixes for `optional` objects (revised by [N4078](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4078.html))
428447 * editorial change in [N4714](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4714.html)
429448 * [P0134R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0134r0.html): Introducing a name for *brace-or-equal-initializer*&#8203;s for non-static data members
430449 * [P0583R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0583r0.pdf): `std::byte` is the correct name
@@ -472,79 +491,83 @@
472491
473492 These papers are superseded and newer revisions have been reviewed, so no further actions would be taken:
474493
494+* [N1489](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1489.pdf): Templates aliases for C++ (revised by [N2112](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2112.pdf))
475495 * [N1599](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1599.html): [Issue 431](https://wg21.cmeerw.net/lwg/issue431): Swapping containers with unequal allocators (see subsequent [N2525](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2525.pdf))
476496 * [N1890](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf): Initialization and initializers (see subsequent [N1919](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1919.pdf))
477-* [N1919](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1919.pdf): Initializer lists (revised as [N2100](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2100.pdf))
478-* [N1932](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1932.pdf): Random Number Generation in C++0X: A Comprehensive Proposal (revised as [N2032](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2032.pdf))
479-* [N1961](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1961.html): Wording for range-based for-loop (revised as [N2196](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2196.html))
480-* [N1968](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1968.pdf): Lambda expressions and closures for C++ (revised as [N2329](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2329.pdf): Lambda expressions and closures for C++ (Revision 1))
481-* [N2032](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2032.pdf): Random Number Generation in C++0X: A Comprehensive Proposal, version 2 (revised as [N2079](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2079.pdf))
482-* [N2062](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2062.html): POD's Revisited (revised as [N2102](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2102.html))
483-* [N2079](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2079.pdf): Random Number Generation in C++0X: A Comprehensive Proposal, version 3 (revised as [N2111](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2111.pdf))
484-* [N2100](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2100.pdf): Initializer lists (Rev 2.) (revised as [N2215](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf))
485-* [N2102](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2102.html): POD's Revisited; Resolving Core Issue 568 (Revision 1) (revised as [N2172](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2172.html))
486-* [N2151](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2151.pdf): Variadic Templates for the C++0x Standard Library (revised as [N2192](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2192.pdf))
487-* [N2172](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2172.html): POD's Revisited; Resolving Core Issue 568 (Revision 2) (revised as [N2230](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2230.html))
488-* [N2192](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2192.pdf): Variadic Templates for the C++0x Standard Library (Revision 1) (revised as [N2242](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf))
489-* [N2196](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2196.html): Wording for range-based `for`-loop (revision 1) (revised as [N2243](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2243.html))
490-* [N2210](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2210.html): Defaulted and Deleted Functions (revised as [N2326](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html))
491-* [N2202](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2202.html): C99 Compatibility : `__func__` and predeclared identifiers (revised as [N2251](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2251.html))
492-* [N2215](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf): Initializer lists (Rev. 3) (revised as [N2385](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2385.pdf))
493-* [N2217](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2217.pdf): Placement Insert for Containers (revised as [N2268](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2268.pdf))
494-* [N2230](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2230.html): POD's Revisited; Resolving Core Issue 568 (Revision 3) (revised as [N2294](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2294.html))
495-* [N2236](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2236.pdf): Towards support for attributes in C++ (revised as [N2379](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2379.pdf))
496-* [N2243](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2243.html): Wording for range-based `for`-loop (revision 2) (revised as [N2394](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2394.html))
497-* [N2251](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2251.html): C99 Compatibility : `__func__` and predeclared identifiers (revision 1) (revised as [N2340](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm))
498-* [N2268](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2268.pdf): Placement Insert for Containers (Revision 1) (revised as [N2345](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2345.pdf))
499-* [N2294](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2294.html): POD's Revisited; Resolving Core Issue 568 (Revision 4) (revised as [N2342](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm))
500-* [N2326](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html): Defaulted and Deleted Functions (revised as [N2346](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm))
501-* [N2329](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2329.pdf): Lambda expressions and closures for C++ (Revision 1) (revised as [N2413](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2413.pdf))
502-* [N2345](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2345.pdf): Placement Insert for Containers (Revision 2) (revised as [N2642](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2642.pdf))
503-* [N2379](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2379.pdf): Towards support for attributes in C++ (Revision 2) (revised as [N2418](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2418.pdf))
504-* [N2385](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2385.pdf): Initializer lists WP wording (revised as [N2531](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2531.pdf))
505-* [N2394](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2394.html): Wording for range-based `for`-loop (revision 3) (revised as [N2778](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2778.htm))
506-* [N2413](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2413.pdf): Lambda Expressions and Closures: Wording for Monomorphic Lambdas (revised as [N2487](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2487.pdf))
507-* [N2418](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2418.pdf): Towards support for attributes in C++ (Revision 3) (revised as [N2553](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2553.pdf))
508-* [N2477](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2477.pdf): Uniform initialization design choices (Revision 2) (revised as [N2532](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2532.pdf))
509-* [N2487](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2487.pdf): Lambda Expressions and Closures: Wording for Monomorphic Lambdas (Revision 2) (revised as [N2529](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2529.pdf))
510-* [N2529](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2529.pdf): Lambda Expressions and Closures: Wording for Monomorphic Lambdas (Revision 3) (revised as [N2550](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf))
497+* [N1919](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1919.pdf): Initializer lists (revised by [N2100](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2100.pdf))
498+* [N1932](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1932.pdf): Random Number Generation in C++0X: A Comprehensive Proposal (revised by [N2032](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2032.pdf))
499+* [N1961](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1961.html): Wording for range-based for-loop (revised by [N2196](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2196.html))
500+* [N1968](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1968.pdf): Lambda expressions and closures for C++ (revised by [N2329](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2329.pdf): Lambda expressions and closures for C++ (Revision 1))
501+* [N2032](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2032.pdf): Random Number Generation in C++0X: A Comprehensive Proposal, version 2 (revised by [N2079](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2079.pdf))
502+* [N2062](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2062.html): POD's Revisited (revised by [N2102](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2102.html))
503+* [N2079](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2079.pdf): Random Number Generation in C++0X: A Comprehensive Proposal, version 3 (revised by [N2111](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2111.pdf))
504+* [N2095](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2095.html): `long long` Goes to the Library (revised by [N2114](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2114.html))
505+* [N2100](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2100.pdf): Initializer lists (Rev 2.) (revised by [N2215](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf))
506+* [N2102](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2102.html): POD's Revisited; Resolving Core Issue 568 (Revision 1) (revised by [N2172](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2172.html))
507+* [N2112](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2112.pdf): Templates Aliases (revised by [N2258](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf))
508+ * **NOTE** The [page](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/) missed the link to Previous Version.
509+* [N2151](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2151.pdf): Variadic Templates for the C++0x Standard Library (revised by [N2192](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2192.pdf))
510+* [N2172](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2172.html): POD's Revisited; Resolving Core Issue 568 (Revision 2) (revised by [N2230](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2230.html))
511+* [N2192](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2192.pdf): Variadic Templates for the C++0x Standard Library (Revision 1) (revised by [N2242](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf))
512+* [N2196](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2196.html): Wording for range-based `for`-loop (revision 1) (revised by [N2243](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2243.html))
513+* [N2210](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2210.html): Defaulted and Deleted Functions (revised by [N2326](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html))
514+* [N2202](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2202.html): C99 Compatibility : `__func__` and predeclared identifiers (revised by [N2251](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2251.html))
515+* [N2215](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf): Initializer lists (Rev. 3) (revised by [N2385](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2385.pdf))
516+* [N2217](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2217.pdf): Placement Insert for Containers (revised by [N2268](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2268.pdf))
517+* [N2230](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2230.html): POD's Revisited; Resolving Core Issue 568 (Revision 3) (revised by [N2294](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2294.html))
518+* [N2236](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2236.pdf): Towards support for attributes in C++ (revised by [N2379](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2379.pdf))
519+* [N2243](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2243.html): Wording for range-based `for`-loop (revision 2) (revised by [N2394](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2394.html))
520+* [N2251](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2251.html): C99 Compatibility : `__func__` and predeclared identifiers (revision 1) (revised by [N2340](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm))
521+* [N2268](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2268.pdf): Placement Insert for Containers (Revision 1) (revised by [N2345](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2345.pdf))
522+* [N2294](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2294.html): POD's Revisited; Resolving Core Issue 568 (Revision 4) (revised by [N2342](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm))
523+* [N2326](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html): Defaulted and Deleted Functions (revised by [N2346](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm))
524+* [N2329](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2329.pdf): Lambda expressions and closures for C++ (Revision 1) (revised by [N2413](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2413.pdf))
525+* [N2345](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2345.pdf): Placement Insert for Containers (Revision 2) (revised by [N2642](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2642.pdf))
526+* [N2379](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2379.pdf): Towards support for attributes in C++ (Revision 2) (revised by [N2418](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2418.pdf))
527+* [N2385](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2385.pdf): Initializer lists WP wording (revised by [N2531](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2531.pdf))
528+* [N2394](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2394.html): Wording for range-based `for`-loop (revision 3) (revised by [N2778](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2778.htm))
529+* [N2413](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2413.pdf): Lambda Expressions and Closures: Wording for Monomorphic Lambdas (revised by [N2487](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2487.pdf))
530+* [N2418](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2418.pdf): Towards support for attributes in C++ (Revision 3) (revised by [N2553](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2553.pdf))
531+* [N2477](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2477.pdf): Uniform initialization design choices (Revision 2) (revised by [N2532](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2532.pdf))
532+* [N2487](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2487.pdf): Lambda Expressions and Closures: Wording for Monomorphic Lambdas (Revision 2) (revised by [N2529](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2529.pdf))
533+* [N2529](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2529.pdf): Lambda Expressions and Closures: Wording for Monomorphic Lambdas (Revision 3) (revised by [N2550](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf))
511534 * [N2531](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2531.pdf): Initializer lists WP wording (Revision 2) (see subsequent [N2575](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2575.pdf))
512535 * [N2532](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2532.pdf): Uniform initialization design choices (Revision 2) (see subsequent [N2575](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2575.pdf))
513-* [N2550](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf): Lambda Expressions and Closures: Wording for Monomorphic Lambdas (Revision 4) (revised as [N2927](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf))
514-* [N2553](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2553.pdf): Towards support for attributes in C++ (Revision 4) (revised as [N2751](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2751.pdf); the unavailable revised revision N2663 is wrong on [document list](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/))
515-* [N2575](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2575.pdf): Initializer Lists — Alternative Mechanism and Rationale (revised as [N2640](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf))
516-* [N2635](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2635.html): Local and Unnamed Types as Template Arguments (revised as [N2657](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2657.htm))
517-* [N2640](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf): Initializer Lists — Alternative Mechanism and Rationale (v. 2) (revised as [N2672](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm))
518-* [N2642](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2642.pdf): Proposed Wording for Placement Insert (revised as [N2680](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2680.pdf))
519-* [N2751](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2751.pdf): Towards support for attributes in C++ (Revision 5) (revised as [N2761](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf))
520-* [N2778](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2778.htm): Wording for range-based `for`-loop (revision 4) (revised as [N2930](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html))
521-* [N2820](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2820.pdf): Adding heterogeneous comparison lookup to associative containers (revised as [N2882](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2882.pdf))
522-* [N2882](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2882.pdf): Adding heterogeneous comparison lookup to associative containers for TR2 (Rev 1) (revised as [N3465](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3465.pdf))
523-* [N2904](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2904.pdf): Defining default copy and move (revised as [N2953](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2953.html))
524-* [N2953](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2953.html): Defining Move Special Member Functions (revised as [N2987](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2987.html))
525-* [N2987](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2987.html): Defining Move Special Member Functions (revised as [N3044](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3044.html))
526-* [N3044](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3044.html): Defining Move Special Member Functions (revised as [N3053](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html))
527-* [N3149](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3149.html): From *Throws: Nothing* to `noexcept` (revised as [N3195](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3195.htm))
528-* [N3248](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3248.pdf): `noexcept` Prevents Library Validation (revised as [N3279](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3279.pdf))
536+* [N2550](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf): Lambda Expressions and Closures: Wording for Monomorphic Lambdas (Revision 4) (revised by [N2927](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf))
537+* [N2553](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2553.pdf): Towards support for attributes in C++ (Revision 4) (revised by [N2751](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2751.pdf); the unavailable revised revision N2663 is wrong on [document list](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/))
538+* [N2575](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2575.pdf): Initializer Lists — Alternative Mechanism and Rationale (revised by [N2640](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf))
539+* [N2635](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2635.html): Local and Unnamed Types as Template Arguments (revised by [N2657](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2657.htm))
540+* [N2640](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf): Initializer Lists — Alternative Mechanism and Rationale (v. 2) (revised by [N2672](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm))
541+* [N2642](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2642.pdf): Proposed Wording for Placement Insert (revised by [N2680](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2680.pdf))
542+* [N2751](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2751.pdf): Towards support for attributes in C++ (Revision 5) (revised by [N2761](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf))
543+* [N2778](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2778.htm): Wording for range-based `for`-loop (revision 4) (revised by [N2930](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html))
544+* [N2820](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2820.pdf): Adding heterogeneous comparison lookup to associative containers (revised by [N2882](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2882.pdf))
545+* [N2882](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2882.pdf): Adding heterogeneous comparison lookup to associative containers for TR2 (Rev 1) (revised by [N3465](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3465.pdf))
546+* [N2904](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2904.pdf): Defining default copy and move (revised by [N2953](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2953.html))
547+* [N2953](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2953.html): Defining Move Special Member Functions (revised by [N2987](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2987.html))
548+* [N2987](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2987.html): Defining Move Special Member Functions (revised by [N3044](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3044.html))
549+* [N3044](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3044.html): Defining Move Special Member Functions (revised by [N3053](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html))
550+* [N3149](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3149.html): From *Throws: Nothing* to `noexcept` (revised by [N3195](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3195.htm))
551+* [N3248](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3248.pdf): `noexcept` Prevents Library Validation (revised by [N3279](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3279.pdf))
529552 * [N3433](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3433.html): Clarifying Memory Allocation (revised by [N3537](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3537.html))
530-* [N3465](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3465.pdf): Adding heterogeneous comparison lookup to associative containers for TR2 (Rev 2) (revised as [N3657](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3657.htm))
553+* [N3465](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3465.pdf): Adding heterogeneous comparison lookup to associative containers for TR2 (Rev 2) (revised by [N3657](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3657.htm))
531554 * [N3537](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3537.html): Clarifying Memory Allocation (revised by [N3664](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3664.html))
532-* [N3597](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3597.html): Relaxing constraints on `constexpr` functions (revised as [N3652](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html))
533-* [N3598](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3598.html): `constexpr` member functions and implicit `const` (revised as [N3652](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html))
534-* [N3727](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3727.html): A proposal to add `invoke` function template (revised as [N4169](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html))
535-* [N3873](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3873.html): Improved insertion interface for unique-key maps (revised as [N4006](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4006.html) and [N4240](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4240.html))
555+* [N3597](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3597.html): Relaxing constraints on `constexpr` functions (revised by [N3652](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html))
556+* [N3598](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3598.html): `constexpr` member functions and implicit `const` (revised by [N3652](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html))
557+* [N3727](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3727.html): A proposal to add `invoke` function template (revised by [N4169](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html))
558+* [N3873](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3873.html): Improved insertion interface for unique-key maps (revised by [N4006](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4006.html) and [N4240](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4240.html))
536559 * [N4002](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4002.pdf): Cleaning‐up `noexcept` in the Library (revised by [N4227](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4227.pdf))
537560 * [N4006](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4006.html): An improved `emplace()` for unique-key maps (dropped; see other derivation of [N3873](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3873.html))
538-* [N4017](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4017.htm): Non-member `size()` and more (revised as [N4155](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4155.htm))
539-* [N4056](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4056.html): Minimal incomplete type support for standard containers (revised as [N4371](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4371.html))
540-* [N4151](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4151.html): TriviallyCopyable `reference_wrapper` (revised as [N4277](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4277.html))
541-* [N4155](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4155.htm): Non-member `size()` and more (Revision 1) (revised as [N4280](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf))
561+* [N4017](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4017.htm): Non-member `size()` and more (revised by [N4155](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4155.htm))
562+* [N4056](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4056.html): Minimal incomplete type support for standard containers (revised by [N4371](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4371.html))
563+* [N4151](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4151.html): TriviallyCopyable `reference_wrapper` (revised by [N4277](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4277.html))
564+* [N4155](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4155.htm): Non-member `size()` and more (Revision 1) (revised by [N4280](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf))
542565 * [N4227](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4227.pdf): Cleaning-up noexcept in the Library (Rev 2) (revised by [N4258](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf))
543566 * [N4228](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4228.pdf): Refining Expression Evaluation Order for Idiomatic C++ (see subsequent [P0145R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0145r0.pdf))
544-* [N4240](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4240.html): Improved insertion interface for unique-key maps (revised as [N4279](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html))
545-* [N4334](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4334.html): Wording for `bool_constant` (revised as [N4389](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html))
546-* [N4371](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4371.html): Minimal incomplete type support for standard containers, revision 2 (revised as [N4390](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4390.html))
547-* [N4390](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4390.html): Minimal incomplete type support for standard containers, revision 3 (revised as [N4510](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4371.html))
567+* [N4240](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4240.html): Improved insertion interface for unique-key maps (revised by [N4279](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html))
568+* [N4334](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4334.html): Wording for `bool_constant` (revised by [N4389](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html))
569+* [N4371](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4371.html): Minimal incomplete type support for standard containers, revision 2 (revised by [N4390](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4390.html))
570+* [N4390](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4390.html): Minimal incomplete type support for standard containers, revision 3 (revised by [N4510](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4371.html))
548571 * [N4429](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4429.html): Rewording inheriting constructors (([core issue 1941](https://wg21.cmeerw.net/cwg/issue1941) et al) (revised by [P0136R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0136r0.html))
549572 * [N4446](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4446.html): The missing *`INVOKE`* related trait (i.e. `is_callable`) (revised by [P0077R2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0077r0.html))
550573 * [P0136R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0136r0.html): Rewording inheriting constructors (([core issue 1941](https://wg21.cmeerw.net/cwg/issue1941) et al) (revised by [P0136R1](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0136r1.html))
@@ -564,9 +587,9 @@
564587
565588 These papers have been previously adopted but superseded by newer adopted papers, so no further actions would be taken:
566589
567-* [N2525](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2525.pdf): Allocator-specific Swap and Move Behavior (adopted 2008-03, in editor's report [N2589](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2589.html); revised as [N2982](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2982.pdf))
568-* [N3672](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3672.html): A proposal to add a utility class to represent optional objects (Revision 4) (adopted 2013-04; revised as [N3793](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3793.html))
569-* [P0077R2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0077r2.html): `is_callable`, the missing *`INVOKE`* related trait (adopted 2016-02; revised as [P0604R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0604r0.html))
590+* [N2525](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2525.pdf): Allocator-specific Swap and Move Behavior (adopted 2008-03, in editor's report [N2589](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2589.html); revised by [N2982](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2982.pdf))
591+* [N3672](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3672.html): A proposal to add a utility class to represent optional objects (Revision 4) (adopted 2013-04; revised by [N3793](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3793.html))
592+* [P0077R2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0077r2.html): `is_callable`, the missing *`INVOKE`* related trait (adopted 2016-02; revised by [P0604R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0604r0.html))
570593
571594 These features were still under development but the approved versions were superseded (note that the superseded versions may still newer than currently adopted version), and not adopted in this document:
572595
@@ -643,7 +666,7 @@
643666
644667 C++11 core language features and headers below now are being used.
645668
646-Note: the "adopted" time notes listed in following entries are relative to working paper.
669+Note: the "adopted" time notes listed in following entries are relative to the working paper.
647670
648671 ## Imported TR1 Headers
649672
@@ -705,7 +728,7 @@
705728
706729 ### TR1
707730
708-TR1 features was once used, but now retired and corresponding ISO C++ features shall be used, since they are imported from TR1 (see editor's report [N2008](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2008.html)) (since b206[2011-05-03]):
731+TR1 features was once used, but now retired and corresponding ISO C++ features shall be used, since they are imported from TR1 (see editor's report [N2008](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2008.html) and the correspoinding working draft [N2009](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2009.pdf)) (since b206[2011-05-03]):
709732
710733 * TR1 `<type_traits>` including metafunctions and `std::tr1::aligned_storage` (since b175[2010-12-23])
711734 * replaced by C++11 `std::aligned_storage`, see [N2341](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf) (since b206[2011-05-03])
@@ -715,10 +738,20 @@
715738 * with [LWG 575](http://wg21.cmeerw.net/lwg/issue575): the specification of `~shared_ptr` is MT-unfriendly, makes implementation assumptions, [reworded slightly](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2283.html)
716739 * see also [LWG 611](http://wg21.cmeerw.net/lwg/issue611)
717740
718-Some TR1 features are not used, as C++11 features are used instead:
741+Some TR1 features are not used, as C++11 features are directly used instead:
719742
720-* TR1 `<memory>` `std::tr1::function` is preferred by `std::function` (since b207[2011-05-09])
743+* TR1 `<memory>` `std::tr1::function` is superseded by `std::function` (since b207[2011-05-09])
721744 * with [LWG 2132](https://wg21.cmeerw.net/lwg/issue2132): `std::function` ambiguity
745+* TR1 `<cstdint>` types in `std::tr1` are superseded `std` types in ISO C++11 (since b209[2011-05-14])
746+ * **NOTE** Previously, `<stdint.h>` from GCC or ISO C99 was used optionally (since b133[2010-07-16]).
747+* TR1 `<cmath>` `std::tr1::llround` is superseded by `std::llround` (since b260[2011-11-15])
748+ * **NOTE** The feature was not actually relied on, instead ISO C99 `llround` in the global namespace was used as a workaround for implementations, until YBase.LibDefect.CMath was settled (since b556[2014-11-27]).
749+
750+Some features are not used, but being compatible (see also Neutral of existence features below).
751+
752+* TR1 additions to header `<cfloat>`
753+
754+Other superseded TR1 features in the listed headers above may be also relied on since then.
722755
723756 ### Other TSes
724757
@@ -869,6 +902,7 @@
869902 * [LWG 564](https://wg21.cmeerw.net/lwg/issue564): `stringbuf` `seekpos` underspecified (since b743[2016-11-21])
870903 * [LWG 589](http://wg21.cmeerw.net/lwg/issue589): Requirements on iterators of member template functions of containers (since b216[2011-06-08])
871904 * [LWG 596](http://wg21.cmeerw.net/lwg/issue596): 27.8.1.3 Table 112 omits `"a+"` and `"a+b"` modes (since b326[2012-07-19])
905+* [LWG 694](http://wg21.cmeerw.net/lwg/issue694): `std::bitset` and `long long` (since b932[2021-12-04])
872906 * [LWG 704](http://wg21.cmeerw.net/lwg/issue704): MoveAssignable requirement for container value type overly strict (since b206[2011-05-03])
873907 * [LWG 711](https://wg21.cmeerw.net/lwg/issue711): Contradiction in empty `shared_ptr` (since b784[2017-04-29])
874908 * [LWG 762](http://wg21.cmeerw.net/lwg/issue762): `std::unique_ptr` requires complete type? (since b238[2011-09-07])
@@ -901,6 +935,7 @@
901935 * [LWG 233](http://wg21.cmeerw.net/lwg/issue233): Insertion hints in associative containers
902936 * see also [LWG 371](http://wg21.cmeerw.net/lwg/issue371)
903937 * [N1811](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf): Adding the `long long` type to C++ (Revision 3) (since b206[2011-05-03])
938+ * with specializations of `numerical_limits` in [N2114](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2114.html): `long long` Goes to the Library, Revision 1 (since b932[2021-12-04])
904939 * [N1822](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1822.pdf): A Proposal to add a max significant decimal digits value to the C++ Standard Library Numeric limits (since b260[2011-11-12]; i.e. `numeric_limits::max_digits10`)
905940 * without [LWG 613](http://wg21.cmeerw.net/lwg/issue613): `max_digits10` missing from `numeric_limits`
906941 * [N1836](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf): Draft Technical Report on C++ Library Extensions (Built-in type traits) (since b206[2011-05-03])
@@ -914,6 +949,7 @@
914949 * with [CWG 615](http://wg21.cmeerw.net/cwg/issue615): Incorrect description of variables that can be initialized
915950 * [N1986](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf): Delegating Constructors (revision 3) (since b311[2011-05-25])
916951 * [N1987](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm): Adding "`extern template`" (version 2) (since b206[2011-05-03])
952+* [N2005](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2005.pdf): A maximum significant decimal digits value for the C++0x Standard Library Numeric limits (since b301[2012-04-13])
917953 * [N2179](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html): Language Support for Transporting Exceptions between Threads (since b538[2014-09-28]; i.e. `exception_ptr` and `current_exception`, etc)
918954 * with [LWG 829](http://wg21.cmeerw.net/lwg/issue829): `current_exception` wording unclear about exception type
919955 * with [LWG 1130](http://wg21.cmeerw.net/lwg/issue1130): `copy_exception` name misleading (i.e. `make_exception_ptr`; since b550[2014-11-04])
@@ -1040,6 +1076,7 @@
10401076 * [N3671](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3671.html): Making non-modifying sequence operations more robust: Revision 2 (since b627[2015-08-30])
10411077 * [N3778](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3778.html): C++ Sized Deallocation (since b842[2018-10-29])
10421078 * [N4169](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html): A proposal to add `invoke` function template (Revision 1) (since b617[2015-07-23])
1079+ * **without** [P1065R2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1065r2.html): `constexpr` *INVOKE*
10431080 * `pair` constructors improvement in [N4387](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387.html): Improving `pair` and `tuple`, revision 3 (adopted 2015-05; since b850[2019-01-14])
10441081 * missed in [N4528](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4528.html), see [this commit](https://github.com/cplusplus/draft/commit/c8347e3f3caa2ecef1b1dd869ce15b9095134a1a).
10451082 * **without** [LWG 2051](https://wg21.cmeerw.net/lwg/issue2051): Explicit `tuple` constructors for more than one parameter
@@ -1047,6 +1084,8 @@
10471084 * [LWG 2397](https://wg21.cmeerw.net/lwg/issue2397): `map::emplace` and explicit `V` constructors
10481085 * see also [EWG 114](https://wg21.cmeerw.net/ewg/issue114): N4074 Let `return {expr}` Be Explicit, Revision 2, N4131 explicit should never be implicit, N4094 Response To: Let `return {expr}` Be Explicit, N4029 Let return Be Direct and `explicit`, N3452 (unpublished) Let `{x,y,z}` => `explicit` (resolved as NAD)
10491086 * [N4389](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html): Wording for `bool_constant`, revision 1 (since b617[2015-07-23])
1087+* some C11 features in [P0063R3](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html): C++17 should refer to C11 instead of C99 (adopted 2016-06)
1088+ * `DBL_HAS_SUBNORM`, `FLT_HAS_SUBNORM` and `LDBL_HAS_SUBNORM` (since b932[2021-12-04])
10501089 * [P0188R1](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0188r1.pdf): Wording for `[[fallthrough]]` attribute. (adopted 2016-02; since b793[2017-06-06])
10511090 * [P0189R1](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0189r1.pdf): Wording for `[[nodiscard]]` attribute. (adopted 2016-02; since b823[2018-07-26])
10521091 * [P0212R1](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0212r1.pdf): Wording for `[[maybe_unused]]` attribute. (adopted 2016-02; since b823[2018-07-26])
@@ -1235,8 +1274,6 @@
12351274 * [P0298R3](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0298r3.pdf): A byte type definition
12361275 * replaced by `ystdex::byte`, except when the core language support unavailable before C++17, where the name is provided as an alias of `unsigned char`
12371276 * see also [P0583R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0583r0.pdf).
1238-* [P0318R1](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0318r1.pdf): `unwrap_ref_decay` and `unwrap_reference` (adopted 2018-11)
1239- * replaced by `ystdex::unwrap_ref_decay` and `ystdex::unwrap_reference`, with extensions for `ystdex::lref`
12401277 * [P0550R2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0550r2.pdf): Transformation Trait `remove_cvref`
12411278 * replaced by `ystdex::remove_cvref`
12421279 * [P0604R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0604r0.html): Resolving GB 55, US 84, US 85, US 86 (adopted 2017-03)
@@ -1301,6 +1338,9 @@
13011338 * not same type to any instance of `std::reference_wrapper` so not treated specially by `std::bind` and other `std` API
13021339 * with part of [P0604R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0604r0.html)
13031340 * with part of [LWG 2993](https://wg21.cmeerw.net/lwg/issue2993)
1341+* `ystdex::unwrap_reference`, `ystdex::unwrap_reference_t`, `ystdex::unwrap_ref_decay` and `ystdex::unwrap_ref_decay_t` are provided with extensions for `ystdex::lref`, as replacement for the following C++20 features
1342+ * [P0318R1](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0318r1.pdf): `unwrap_ref_decay` and `unwrap_reference` (adopted 2018-11)
1343+ * [LWG 3202](https://wg21.cmeerw.net/lwg/issue3202): P0318R1 was supposed to be revised
13041344 * `ystdex::any` is provided as a replacement for `std::any` with richer features and greater availability
13051345 * already with following C++17 `std::any` features
13061346 * [LWG 2769](https://wg21.cmeerw.net/lwg/issue2769)
@@ -1319,10 +1359,12 @@
13191359 * `ystdex::function` is provided as a replacement for `std::function` with richer features
13201360 * with [LWG 2062](https://wg21.cmeerw.net/lwg/issue2062) not depending on C++17
13211361 * with allocator support in construction like the feature removed by [P0302R1](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0302r1.html)
1322-* `ystdex::list` is proveded as a replacement for `std::list` with draft ISO C++20 features support
1323- * part of [LWG 1234](https://wg21.cmeerw.net/lwg/issue1234): "Do the right thing" and `NULL`
1324- * part of [N4510](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html): Minimal incomplete type support for standard containers, revision 4
1325- * part of [P0084R2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0084r2.pdf): Emplace Return Type (Revision 2) (adopted 2016-06)
1362+* `ystdex::list` is proveded as a replacement for `std::list` with enhanced features
1363+ * (since C++11) with the part of [LWG 1234](https://wg21.cmeerw.net/lwg/issue1234): "Do the right thing" and `NULL`
1364+ * (since C++17) with the part of [N4510](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html): Minimal incomplete type support for standard containers, revision 4
1365+ * (since C++20) with the part of [P0084R2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0084r2.pdf): Emplace Return Type (Revision 2) (adopted 2016-06)
1366+ * with the part of [LWG 2839](https://wg21.cmeerw.net/lwg/issue2839): Self-move-assignment of library types, again
1367+
13261368 * `ystdex::map` is provided as a replacement for `std::map` provided (other containers TBD) including follwing enhancement (full ISO C++17 features support):
13271369 * [N3657](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3657.htm)
13281370 * part of [N4258](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf) (adopted 2014-11)
@@ -1337,7 +1379,7 @@
13371379
13381380 ### Neutral of existence
13391381
1340-These post-C++03 (adopted, any proposed or any not proposed but theorotically allowed having well-defined behavior) resolutions or features (with diagnostic suggestions) are **not** depended on **currently** (revised b865[2019-08-23]) but confirmed still being compatible (however, user code can still be affected; some resolutions may have been applied to similar other interface of YBase, see sections above):
1382+These post-C++03 (adopted, any proposed or any not proposed but theorotically allowed having well-defined behavior) resolutions or features (with diagnostic suggestions) are **not** depended on **currently** (revised b928[2021-10-22]) but confirmed still being compatible (however, user code can still be affected; some resolutions may have been applied to similar other interface of YBase, see sections above):
13411383
13421384 * [CWG 446](http://wg21.cmeerw.net/cwg/issue446): Does an lvalue-to-rvalue conversion on the "`?`" operator produce a temporary?
13431385 * [CWG 86](http://wg21.cmeerw.net/cwg/issue86): Lifetime of temporaries in query expressions
@@ -1384,6 +1426,7 @@
13841426 * [LWG 283](http://wg21.cmeerw.net/lwg/issue283): `std::replace()` requirement incorrect/insufficient
13851427 * [LWG 387](http://wg21.cmeerw.net/lwg/issue387): `std::complex` over-encapsulated
13861428 * [LWG 402](http://wg21.cmeerw.net/lwg/issue402): wrong new expression in `[some_]allocator::construct`
1429+* [LWG 455](https://wg21.cmeerw.net/lwg/issue455): `cerr::tie()` and `wcerr::tie()` are overspecified
13871430 * [LWG 497](http://wg21.cmeerw.net/lwg/issue497): meaning of `numeric_limits::traps` for floating point types
13881431 * [LWG 531](http://wg21.cmeerw.net/lwg/issue531): array forms of unformatted input functions (i.e. for `istream::get`)
13891432 * [LWG 543](http://wg21.cmeerw.net/lwg/issue543): `valarray` slice default constructor
@@ -1525,6 +1568,7 @@
15251568 * [P0641R2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0641r2.html): Resolving Core Issue #1331 (`const` mismatch with defaulted copy constructor) (adopted 2017-11)
15261569 * [CWG 1331](https://wg21.cmeerw.net/cwg/issue1331): `const` mismatch with defaulted copy constructor
15271570 * see also [CWG 1426](https://wg21.cmeerw.net/cwg/issue1426): Allowing additional parameter types in defaulted functions
1571+* [P0935R0](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0935r0.html): Eradicating unnecessarily explicit default constructors from the standard library (adopted 2018-06)
15281572 * [P1227R2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1227r2.html): Signed `ssize()` functions, unsigned `size()` functions (Revision 2) (adopted 2019-03)
15291573
15301574 ### Avoided
Show on old repository browser