This paper presents a quick summary of all papers submitted to WG21 for consideration by the Library Working Group, with an indication of their progress towards inclusion in the next C++ Standard or future TRs. It is based on the December 2007 mid-term mailing.
There is a minimal crossover with the State of Evolution paper N2507 where concurrency related topics tend to cross the Core/Library divide, and till now have been largely handled by the Evolution Working Group.
A clear statement of intent was made to complete work on the new standard in 2008, in order to achieve publication in 2009. To meet this timetable the plan is to vote out a feature complete Working Draught in two meetings time at Sophia-Antipolis in June. An FCD will be issued from the following meeting, allowing at least a minimal time for review and 'integration testing' of the new features.
In order to reach this goal, the threading library presented at Kona has been adopted, although a further round of work in an Editorial Committee will follow before a Review Committee signs off the draught wording for the project editor. While this proposal is feature and semantically complete, a little wordsmithing remains before it is ready for the Working Draught. It is expected to be incorporated in the Working Draught of the pre-Bellevue mailing.
The major challenge confronting the Library Working Group now is to review the current library for the application of the new Concepts language feature. It is expected that this will consume considerable time at each of the next two meetings. A challenge of a similar scale remains in processing the outstanding Issues List, not reflected here.
Much of the library development that has gone into the next standard occurred during the development of Library TR1. That process is captured in document N2364. The last revision of that TR is N1836.
Papers have been grouped in a self-selecting manner as either new components or updates. There is usually a series of papers describing a proposal's evolution, and only the right-most paper is deemed current. Papers are listed in the order or the clause they apply to, or is most relevant. Exceptions are the updates for language features, which generally apply across the whole library.
Note that while the deadline for new proposals for C++0x is long past, work continues on TR2 and beyond, so new submissions remain welcome.
Proposals in a green font have advanced a category since the last meeting, those in red have moved back, while those in yellow are new or have been updated since the last meeting.
Proposals with a green background have been highlighted as the features that will be delivered in the next version of the standard in the Registration Document.
WG21 Number(s) | Title | Authors |
New Library Components Integrated into working paper | ||
These propsals are already incorporated into the latest working paper, N2461, or the project editor has been directed to include them in the next draught. The majority were introduced by adopting the text of Library Technical Report 1 directly. For reference the original paper voted into the Library TR is listed in those cases, although actual wording comes from the TR which incorporates defect reports. | ||
N2096 N2179 | Language Support for Transporting Exceptions between Threads | Peter Dimov |
N2066 N2174 N2241 | Diagnostics Enhancements for C++0x | Beman Dawes |
N1403 | tuple type for the standard library | Jaakko Järvi |
N1424 N1836 | A Proposal to add Type Traits to the Standard Library | John Maddock |
N1402 N1836 | Polymorphic Function Object Wrapper for the Standard Library | Doug Gregor |
N1450 N1836 | General Purpose Smart Pointers | P. Dimov, B. Dawes, G. Colvin |
N1548 N1836 | A Fixed Size Array Wrapper for the Standard Library | Alisdair Meredith |
N1456 N1836 | A Proposal to Add Hashtables to the Standard Library | Matt Austern |
N1588 N1914 N1932 N1933 N2032 N2033 N2079 N2111 | Random Number Generation in C++0x: A Comprehensive Proposal | M. Paterno, M. Fischler, W. Brown, J. Kowalkowski |
N1429 N1836 | Regular Expression for the Standard Library | John Maddock |
N2047 N2145 N2324 N2381 N2393 N2427 | C++ Atomic Types and Operations | H.-J. Boehm, L. Crowl |
New Language Support in the Working Paper | ||
These propsals are already incorporated into the latest working paper, N2461, or the project editor has been directed to include them in the next draught. They all take advantage of some new language feature voted into the Core Language to improve the library experience - such as with stronger type safety, improved runtime performance or a richer set of semantics. | ||
N1856 | Rvalue Reference Recommendations for Chapter 20 | Howard E. Hinnant |
N1857 | Rvalue Reference Recommendations for Chapter 21 | Howard E. Hinnant |
N1858 | Rvalue Reference Recommendations for Chapter 23 | Howard E. Hinnant |
N1859 | Rvalue Reference Recommendations for Chapter 24 | Howard E. Hinnant |
N1860 | Rvalue Reference Recommendations for Chapter 25 | Howard E. Hinnant |
N1861 | Rvalue Reference Recommendations for Chapter 26 | Howard E. Hinnant |
N1862 | Rvalue Reference Recommendations for Chapter 27 | Howard E. Hinnant |
N2035 N2207 N2238 | Minimal Unicode support for the standard library | Matthew Austern |
N2095 N2114 | long long Goes to the Library | Robert Klarer |
N2151 N2192 | Variadic Templates for the C++0x Standard Library | D. Gregor, J. Järvi |
N2194 | decltype for the C++0x Standard Library | D. Gregor, J. Järvi |
N2219 N2288 N2349 | Constant Expressions in the Standard Library | G. Dos Reis, B. Stroustrup |
N2292 | Standard Library Applications for Deleted Functions | Alisdair Meredith |
N2293 N2434 | Standard Library Applications for Explicit Conversion Operators | Alisdair Meredith |
Enhancements Integrated into working paper | ||
These propsals are already incorporated into the latest working paper, N2461, or the project editor has been directed to include them in the next draught. Some of these papers are the result of defect reports, and might separately be tracked through the LWG Defect Report List. All are enhancements to existing library components, including those adopted as New Components above. | ||
N2383 N2440 | Abandoning a Process | Lawrence Crowl |
N2296 N2415 N2422 | Diagnostics Enhancements; Resolution of Small Issues | B. Dawes, B. Kosnik, C. Kohlhoff |
N1822 N2005 | A maximum significant decimal digits value for Numeric limits | Paul A Bristow |
N1880 N2348 | A proposal to extend numeric_limits for consistent range query | Fernando Cacciola, Marc Paterno |
N2244 | Perfect forwarding for make_pair and make_tuple | Thorsten Ottosen |
N2299 | Concatenating tuples | Joe Gottman |
N2028 N2157 N2255 | Minor Modifications to the type traits Wording | Howard E. Hinnant |
N2069 N2244 | Yet another type-trait: decay | Thorsten Ottosen |
N2240 | Two missing traits: enable_if and conditional | Benjamin Kosnik |
N1454 | A uniform method for computing function object return types | Douglas Gregor |
N1453 N1836 | reference wrapper | Doug Gregor, Peter Dimov |
N1455 N1836 | Enhanced Binders | P. Dimov, D. Gregor, J. Järvi, G. Powell |
N1432 N1836 | Enhanced Member Pointer Adaptor | Peter Dimov |
N2308 | Adding allocator support to std::function for C++0x | Emil Dotchevski |
N2436 | Small Allocator Fix-ups | Pablo Halpern |
N2232 N2297 N2351 | Improving shared_ptr for C++0x | P. Dimov, B. Dawes |
N1802 N1981 | Uniform Use of std::string | Pete Becker |
N1803 N1982 N2408 | Simple Numeric Access | Pete Becker |
N1683 N1957 N2007 ; N1750 | Proposed Library Additions for Code Conversions | P.J. Plauger ; Beman Dawes |
N2401 | Code Conversion Facets for the Standard C++ Library | P.J. Plauger |
N2070 N2211 N2321 | Enhancing the time_get facet for POSIX® compatibility | Martin Sebor |
N1674 N1865 N1913 | A Proposal to Improve const_iterator Use from C++0x Containers | Walter E. Brown |
N2217 N2268 N2345 | Placement Insert for Containers | Alan Talbot |
N2256 N2350 | Container insert/erase and iterator constness | Matthew Austern, Alan Talbot |
N2204 N2353 | Specification for vector<bool> | Alisdair Meredith |
N1840 ; N1990 | Function template std::minmax and / or algorithm std::minmax_element | Hervé Brönnimann ; Howard E. Hinnant |
N1870 N2099 N2246 |
|
Thorsten Ottosen |
N1568 N1836 | Proposed C99 Library Additions to C++ | P.J. Plauger |
N2391 N2423 N2424 | Recommendations for Resolving Issues re [rand] | Walter E. Brown |
N2259 | Specify header dependency for <iostream> | Howard E. Hinnant |
N2071 | Iostream manipulators for convenient extraction and insertion of struct tm objects | Martin Sebor |
N2072 | Iostream manipulators for convenient extraction and insertion of monetary values | Martin Sebor |
N1842 N1991 | Proposed Text for defaultfloat | Paul A Bristow ; Howard E. Hinnant |
N2409 | Proposed Resolutions for the Outstanding Issues in Chapter 28: Regular expressions library | John Maddock |
Adopted in Principle | ||
These papers have been adopted in principle, and are undergoing final wordsmithing in a specially commissioned Editorial Committee. They will be further reviewed by a Review Committee before moving directly into the Working Paper ahead of the next meeting. | ||
N2320 N2447 | A Multi-threading Library for Standard C++ | H. Hinnant, B. Dawes, L. Crowl, J. Garland, A. Williams |
N2328 N2411 | Proposal for Date-Time Types in C++0x To Support Threading APIs | Jeff Garland |
Updates Planned for C++0x | ||
While these papers have not been adopted yet, they propose updates and enhancement for existing library components for the next C++ Standard, or revisions of already adopted new features. | ||
N2275 | Non-Memory Actions (Library) | Nick Maclaren |
N2298 N2410 | Thread-Safety in the Standard Library | B. Dawes, P. Dimov, H. Sutter |
N2479 | Normative Language to Describe Value Copy Semantics | John Lakos |
N2459 | Allow atomics use in signal handlers | Hans-J. Boehm |
N2303 | Revised system_error | Benjamin Kosnik |
N2309 | Error-handling and Exception-related library changes for C++0x | Benjamin Kosnik |
N2446 | A Scoped Allocator Model | Pablo Halpern |
N2486 | Alternative Allocators and Standard Containers | Lance Diduck |
N2481 | Minimal Support for Garbage Collection and Reachability-Based Leak Detection | H.-J. Boehm, M. Spertus |
N2297 | Improving shared_ptr for C++0x parts VI and VII | P. Dimov, B. Dawes |
N2388 | Pointer Arithmetic for shared_ptr | Pablo Halpern |
N2233 | basic_string operator << | Lawrence Crowl |
N1847 ; N2160 ; N2204 | Library Issue 96: Fixing vector<bool> | Herb Sutter ; Beman Dawes ; Alisdair Meredith |
N2485 | A variadic std::min(T, ...) for the C++ Standard Library | Sylvain Pion |
N2424 | Recommendations for Resolving the 2007-09-21 Issues re [rand] | Walter E. Brown |
N2478 | A Proposal to Add typedef default_random_engine to C++0X | Walter E. Brown |
N1388 | Enhancing numerical support | Gabriel Dos Reis |
N1589 | complex and issue 387 | Howard E. Hinnant |
N2014 | C99 and POSIX(2001) Compatibility | Nick Maclaren |
N2186 | Some Small Additions to iostream | James Kanze |
N2327 | Inconsistencies in IOStreams Numeric Extraction | Cosmin Truta |
D2443 | An Asynchronous Return Buffer | Detlef Vollmann |
New Language Support Planned for C++0x | ||
These propsals take advantage of some new language feature, either voted into the Core Language or anticipated for the Final Candidate Document. | ||
N2037 | Concepts for the C++0x Standard Library: Introduction | D. Gregor, J. Willcock, A. Lumsdaine |
N2038 N2082 N2322 | Concepts for the C++0x Standard Library: Utilities | D. Gregor, J. Willcock, A. Lumsdaine |
N1672 ; N2039 N2083 N2323 | Concepts for the C++0x Standard Library: Iterators | Pete Becker ; D. Gregor, J. Willcock, A. Lumsdaine, J. Siek |
N2040 N2084 | Concepts for the C++0x Standard Library: Algorithms | D. Gregor, J. Willcock, A. Lumsdaine |
N2041 | Concepts for the C++0x Standard Library: Numerics | D. Gregor, J. Willcock, A. Lumsdaine |
N2085 | Concepts for the C++0x Standard Library: Containers | Douglas Gregor |
N2245 | Range Utilities for C++0x | Thorsten Ottosen |
N2435 | Standard Library Applications for Explicit Conversion Operators | Alisdair Meredith |
N2220 | Initializer Lists for Standard Containers | G. Dos Reis, B. Stroustrup |
Reference Papers | ||
These papers are intended to guide or inform authors in developing libraries targetting either the Standard or a Technical Report. While they contain no formal proposals, they still offer value for the process as a whole. | ||
N1940 | Why POSIX Threads Are Unsuitable for C++ | Nick Maclaren |
N2089 | Asynchronous Exceptions for Threads | Nick Maclaren |
N2455 | Thread Cancellation | WG14 |
N2139 | Thoughts on a Thread Library for C++ | Anthony Williams |
N2406 | Mutex, Lock, Condition Variable Rationale | Howard E. Hinnant |
N2121 | Proposed Improvements to the Presentation of Requirements for Functions | Alan Talbot |
N1344 | Namespaces and Library Versioning | Herb Sutter |
N1356 | Predictable data layout for certain non-POD types | R.W. Grosse-Kunstleve & D. Abrahams |
N2004 | Impact of Language Changes on LWG Schedule | Beman Dawes |
N2051 | Evolution of the C++ Standard Library | Alisdair Meredith |
N2270 | Incompatible changes in C++0x | B. Kosnik, M. Austern |
N2271 | EASTL -- Electronic Arts Standard Template Library | Paul Pedriana |
N2036 | Concepts for the C++0x Standard Library: Approach | D. Gregor, J. Willcock, A. Lumsdaine |
N2480 | A Less Formal Explanation of the Proposed C++ Concurrency Memory Model | Hans-J. Boehm |
Evolution of proposals for C++0x | ||
These papers are the inspiration or history behind the active or accepted proposals. They are retained here as they capture a large part of the rationale that will produce C++0x. | ||
N2158 | LWG Issue 206: Linking new/delete operators | Howard E. Hinnant |
N2061 N2106 N2229 | Cloning and Throwing Dynamically Typed Exceptions | Beman Dawes |
N2107 | Exception Propagation across Threads | J. Maurer, A. Meredith |
N1599 | Issue 431: Swapping containers with unequal allocators | Howard E. Hinnant |
N1850 N2387 | Towards a Better Allocator Model | Pablo Halpern |
N1851 | Improving Usability and Performance of TR1 Smart Pointers | V. Kliatchko, I. Rocha |
N1477 N1531 N1550 N1640 | New Iterator Concepts | D. Abrahams, J. Siek, T. Witt |
N1780 | Comments on LWG issue 233: Insertion hints in associative containers | Howard E. Hinnant |
N1398 N1452 | A Proposal to Add an Extensible Random Number Facility to the Standard Library | Jens Maurer |
N1835 | <stdint.h> for C++ | Steve Clamage |
N2022 | Input & Output of NaN and infinity for the C++ Standard Library | Paul A Bristow |
N2195 | Proposed Text for Chapter 29, Atomic Operations Library [atomics] | Peter Dimov |
N2362 | Converting Memory Fences to N2324 Form | P. McKenney, L. Crowl |
N1682 N1907 N2285 | A Multi-threading Library for Standard C++ | Pete Becker |
N1875 | C++ Threads | Lawrence Crowl |
N1883 | Preliminary Threading Library Proposal for TR2 | Kevlin Henney |
N2090 N2178 | A Threading API for C++ | Peter Dimov |
N2094 N2184 | Multi-threading Library for Standard C++ | H. Hinnant |
N2043 | Simplifying And Extending Mutex and Scoped Lock Types For C++ Multi-Threading Library | Ion Gaztañaga |
N1569 | Proposed fixes to library inconsistencies | P.J. Plauger |
N2183 | Issues From Batavia | Howard E. Hinnant |
As there will be a continuing series of TRs there is no hard cut-off date for when proposals will be accepted. Once a proposal is ready it will ship as part of the next available TR. There will be natural 'quiet periods' where proposals are accumulating with little attention though, as work focusses on shipping accepted proposals in the next standard, or the next TR.
New Library Components Accepted into TR2 | ||
These propsals for new library components have full reviewed wording and have been voted into TR2 by the full committee. We do not yet have a draught TR at this early stage of the process, where attention is still focussed on C++0x. | ||
N1576 N1841 N1889 N1934 N1975 | Filesystem Library Proposal | Beman Dawes |
New Library Components Planned for a Future TR | ||
These papers present libraries that are actively under consideration for a future TR. The Library Working Group is committed to an ongoing process of TRs, adopting libraries 'when they are ready'. As such, there is no target TR number associated with any given proposal. | ||
N1974 N2054 N2175 | Networking Library Proposal for TR2 | Christopher Kohlhoff |
N1843 N2067 N2137 | A Proposal to add Interval Arithmetic to the C++ Standard Library | H. Brönnimann, G. Melquiond, S. Pion |
N1871 | Range Library Proposal | Thorsten Ottosen |
N2068 | Range Library Core | Thorsten Ottosen |
N1872 N2059 | Proposal for new string algorithms | P. Droba, T. Ottosen |
N1873 | The Cursor/Property Map Abstraction | D. Kühl, D. Abrahams |
N1878 | A proposal to add an utility class to represent optional objects | Fernando Cacciola |
N1879 | A proposal to add a general purpose ranged-checked numeric_cast<> | Fernando Cacciola |
N1900 N2058 | Proposal to Add Date-Time to the C++ Standard Library | Jeff Garland |
N1939 | Any Library Proposal for TR2 | B. Dawes, K. Henney |
N1973 | Lexical Conversion Library Proposal for TR2 | K. Henney, B. Dawes |
N2044 | Memory Mapped Files And Shared Memory For C++ | Ion Gaztañaga |
N2046 N2136 | Bool_set: multi-valued logic | H. Brönnimann, G. Melquiond, S. Pion |
N2065 | A proposal to add stream objects based on fixed memory buffers | Alberto Ganesh Barbati |
N2086 | Signals and Slots for Library TR2 | Douglas Gregor |
N2101 | Hierarchical Data Structures and Related Concepts for the C++ Standard Library | B. Reiter, R. Rivera |
N2104 | A Proposal to Add Parallel Iteration to the Standard Library | Arch D. Robison |
N2185 | Proposed Text for Parallel Task Execution | Peter Dimov |
N2276 | Thread Pools and Futures | Anthony Williams |
N2231 N2448 | STL singly linked lists | Matt Austern |
N2050 | Proposal to Add a Dynamically Sizeable Bitset to the Standard Library | J. Allsop, A. Meredith, G. Prota |
Evolution of papers targetting future TRs | ||
These papers are the inspiration or history behind the active or accepted proposals. They are retained here as they capture a large part of the rationale that will produce TR2 and beyond. | ||
N1838 | A Proposal to Add Sockets to the Standard Library | Joseph S. Berríos |
N1925 | Networking proposal for TR2 (rev. 1) | Gerhard Wesp |
Papers With an Open Status | ||
These papers have been reviewed by the LWG, and while not yet compelling enough to plan for a future TR, they have not been outright rejected either. Authors are welcome to update and resubmit. | ||
N1668 | A Proposal to add Mathematical Functions for Statistics to the C++ Standard Library | Paul A Bristow |
N1425 | Proposal for Technical Report on C++ Standard Library Security | Martyn Lovell |
N1461 | Security and Standard C Libraries | Martyn Lovell |
N1744 | Big Integer Library Proposal for C++0x | Michiel Salters |
N1724 | A Library Approach to Initialization | Thorsten Ottosen |
N1476 N1530 N1641 | Iterator Facade and Adaptor | D. Abrahams, J. Siek, T. Witt |
N2225 | Improved integration with C arrays and strings | Thorsten Ottosen |
Proposals Rejected by LWG | ||
These proposals have been evaluated and actively rejected. The Library Working Group has no further interest in these proposals. | ||
N1681 N1739 | Adding a Policy-Based Smart Pointer Framework to the Standard Library | David B. Held |
N1692 N2020 N2143 | Proposal for an Infinite Precision Integer | M.J. Kronenburg |
N1718 | A Proposal to add the Infinite Precision Integer and Rational to the C++ Standard Library | M.J. Kronenburg |
N2144 | Proposal for exact specification of is modulo | M.J. Kronenburg |
N2199 | Improved min/max | Howard E. Hinnant |
N2206 | Consistent Insertion into Standard Containers | Alisdair Meredith |
N2212 | Support for sequence in-place construction | Thorsten Ottosen |
N2023 | erase(iterator) for unordered containers should not return an iterator | Joaquín Mª López Muñoz |
N1953 N2045 | Improving STL Allocators | Howard Hinnant ; Ion Gaztañaga |
N2257 | Removing unused allocator functions | Matthew Austern |
N2339 | Response to N2257=07-0117 "Removing unused allocator functions" | Detlef Vollmann |
N1612 | How we might remove the remaining shortcomings of std::complex<T> | Thorsten Ottosen |
N1869 | Wording for imaginary numbers | Thorsten Ottosen |