This paper presents a quick summary of all papers submitted to WG21 for consideration by the Evolution Working Group, with an indication of their progress towards inclusion in the next C++ Standard or future TRs. It is based on the Post-Bellevue mailing.
There are no library papers here, unless highlighted by the Registration Document submitted following the Portland meeting. Otherwise this list focuses entirely on changes affecting clauses 1 -> 16. Library progress can be followed in the companion document N2598. Note that most of the overlap is related to threading and atomic libraries.
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 at the next meeting 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 produced by the draughting comittee at Kona has been adopted, although concern was expressed by the Review Committee about the time-related portion of that document. Subsequently, chapter 31 of the working paper has been removed, subject to further Library Working Group efforts to provide an agreed replacement (potentially the same as the original) at the next meeting.
A second proposed compromise to meet the timetable is the scaling back of the garbage collection feature. The reduced feature and API was reviewed by both Evolution and Library working groups in Bellevue and is proceeding as planned.
The third compromise of a reduce scope 'asynchronous return buffer' was presented to the Library Working Group in Bellevue, see N2561.
Note that while the deadline for new proposals for C++0x is long past, it is not unusual to split a specific feature out of an existing proposal, to ease their progress. Likewise, existing Core Working Group issues may grow large enough to merit a paper that would not have previously shown on this list.
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 |
Integrated into working paper | ||
These proposals are already incorporated into the latest working paper, N2588, or the project editor has been directed to include them in the next draught. | ||
N1377 N1385 N1690 N1770 N1855 N1952 N2118 | A Proposal to Add an Rvalue Reference to the C++ Language | H. Hinnant, P. Dimov, D. Abrahams, J. Adamczyk, A. Hommel |
N1610 | Clarification of Initialization of Class Objects by rvalues | D. Abrahams, G. Powell |
N1784 N1821 N2377 N2439 | Extending Move Semantics To *this (Revision 2) | Bronek Kozicki |
N1381 N1604 N1617 N1720 | static_assert | R. Klarer, J. Maddock, B. Dawes, H. Hinnant |
N1406 N1449 N1451 N1489 N2112 N2258 | Template aliases for C++ | B. Stroustrup, G. Dos Reis, Mat Marcus, Walter E. Brown, Herb Sutter |
N1448 N1960 N1987 | Extern template | Matt Marcus, Garbriel Dos Reis, John Spicer |
N1483 N1603 N1704 N2080 N2152 N2191 N2242 | Variadic Templates | D. Gregor, J. Järvi, G. Powell |
N2488 N2555 | Extending Variadic Template Template Parameters | D. Gregor, E. Niebler |
N1488 N1601 N2214 N2431 | A name for the null pointer: nullptr | H. Sutter, B. Stroustrup |
N1513 N1579 N1719 N2213 N2347 | Strongly Typed Enums | H. Sutter, D. Miller, B. Stroustrup |
N1520 N1616 N1722 N1791 | Extended friend Declarations | William M. Miller |
N1521 N1972 N1980 N2116 N2235 | Generalized Constant Expressions | Gabriel Dos Reis |
N1526 N2013 N2331 N2535 | Namespace Association ("Strong Using") | Benjamin Kosnik, Jason Merril |
N1545 N1566 N1653 | Synchronizing the C++ preprocessor with C99 | Clark Nelson, Paul Mensonides |
N1546 N1877 N1971 N2140 N2165 N2252 N2301 N2341 | Adding Alignment Support to the C++ Programming Language | Attila (Farkas) Fehér, C. Nelson |
N1564 N1627 | "Conditionally-Supported Behavior" | William M. Miller |
N1727 | Changing Undefined Behavior into Diagnosable Errors | William M. Miller |
N1565 N1693 N1735 N1811 | Adding the long long type to C++ | J. Stephen Adamczyk |
N1746 N1988 | Adding extended integer types to C++ | J. Stephen Adamczyk |
N1581 N1618 N1895 N1986 | Delegating Constructors | H. Sutter, F. Glassborow |
N1592 N2223 N2333 N2380 N2437 | Explicit Conversion Operators | Lois Goldthwaite, Michael Wong, J Maurer, A Meredith |
N1628 N1823 N1955 N2018 N2149 N2249 | New Character Types in C++ | Lawrence Crowl |
N1649 N1699 N1757 | Right Angle Brackets | Daveed Vandevoorde |
N1721 N1794 N1894 N1984 | Deducing the type of variable from its initializer expression | J. Jaarvi, B. Stroustrup, G. Dos Reis |
N2337 N2546 | The Syntax of auto Declarations | Daveed Vandevoorde |
N1898 N2119 N2203 N2254 N2376 N2438 N2512 N2540 | Inheriting Constructors | M. Wong, A. Meredith, J. Maurer |
N1944 N2052 N2171 N2239 | A finer-grained alternative to sequence points | Clark Nelson |
N1968 N2329 N2413 N2487 N2529 N2550 | (monomorphic) Lambda expressions and closures for C++ | J Willcock, J Järvi, D Gregor, A Lumsdaine, J. Freeman, L. Crowl |
N1970 N2202 N2251 N2340 | Proposed addition of __func__ predefined identifier from C99 | Alisdair Meredith, J Maurer |
N2047 N2145 N2324 N2381 N2393 N2427 | Atomic operations with multi-threaded environments | Hans Boehm, Lawrence Crowl |
N2052 N2171 N2300 N2334 N2429 | Sequencing and the concurrency memory model | Clark Nelson, Hans Boehm |
N2053 N2146 N2295 N2384 N2442 | Raw String Literals | Beman Dawes |
N2062 N2102 N2172 N2230 N2294 N2342 | PODs unstrung | Beman Dawes |
N2096 N2179 | Propagating exceptions when joining threads | Peter Dimov |
N2115 N2343 | Decltype | J. Järvi, B. Stroustrup, D. Gregor, J. Siek, G. Dos Reis |
N2150 N2253 | Extending sizeof | Jens Maurer |
N2159 N2209 N2295 N2384 N2442 | UTF8 Literals | Lawrence Crowl |
N2170 | Universal Character Names in Literals | Lawrence Crowl |
N2210 N2326 N2346 | Defaulted and Deleted Functions | Lawrence Crowl |
N2248 N2430 N2544 | Unrestricted Unions | L. Goldthwaite, A. Talbot, L. Crowl, J. Maurer |
N2320 N2447 | A Multi-threading Library for Standard C++ | H. Hinnant, B. Dawes, L. Crowl, J. Garland, A. Williams |
N2383 N2440 | Abandoning a Process | Lawrence Crowl |
N2445 N2541 | New function declaration syntax for deduced return types | Jason Merrill (wording proposal by J. Järvi, B. Stroustrup, D. Gregor, J. Siek, G. Dos Reis) |
N2459 N2547 | Allow atomics use in signal handlers | Hans-J. Boehm |
Proposed wording under review in Core | ||
These papers are undergoing final scrutiny in Core Working group. Full wording is available, and each has been reviewed at least once by the CWG. However, some draughting issues remain to be resolved before moving into the Working Paper. | ||
N1427 N1945 N2187 N2402 | Making Local Classes more Useful | Anthony Williams |
N1509 N1890 N1919 N2100 N2215 N2385 N2531 | Initializer lists | Bjarne Stroustrup, G. Dos Reis, J. S. Adamczyk |
N1874 N1966 N2147 N2280 N2545 | Thread-Local Storage | Lawrence Crowl |
N1959 N2354 N2426 | Member Initializers | M Spertus, Bill Seymour |
N2042 N2081 N2193 N2307 N2398 N2421 N2501 | Concepts (unified proposal) | D. Gregor, B. Stroustrup, J. Siek, J. Widman |
N2049 N2196 N2243 N2394 | Proposal for new for-loop | Thorsten Ottosen, Doug Gregor |
N2236 N2379 N2418 N2553 | General Attributes for C++ | Michael Wong, Jens Maurer |
Blessed by evolution - wording available for initial review by Core | ||
The design of these features is deemed complete and accepted by EWG, and there is a paper with complete wording for Core to review. However, CWG have not yet devoted any committee time to this issue. Typically papers in this state have been accepted by EWG at the previous meeting, or the version with proposed wording was not available by the pre-meeting mailing (so the final update may be in this current mailing, or the next.) | ||
N1511 N1892 N2282 N2378 | Extensible Literals | I. McIntosh, M. Wong, R. Mak, R.Klarer Bjarne Stroustrup |
N2148 N2325 N2382 N2444 N2513 | Dynamic initialization and concurrency | Lawrence Crowl |
N2481 N2527 N2585 N2586 | Minimal Support for Garbage Collection and Reachability-Based Leak Detection | H.-J. Boehm, M. Spertus, C.Nelson |
N2499 N2568 | Forward declaration of enumerations | Alberto Ganesh Barbati |
Core issues addressed by specific papers | ||
The design of these features are being handled by the Core Working Group as part of their issue resolution process, but the issue is large enough to prompt a full paper. | ||
N1528 | Syntactic Disambiguation Using the Template Keyword | John H. Spicer |
Active topics in the Concurrency sub-group | ||
These topics are in final review, with the intention to incorporate each one in the next standard. Papers should mostly be handled directly the the Core and Library working groups at the next meeting. | ||
N2275 | Non-Memory Actions (Library) | Nick Maclaren |
N2274 | Object Aliasing and Threads | Nick Maclaren |
N2492 N2556 | C++ Data-Dependency Ordering: Atomics and Memory Model | P. McKenney, H.-J. Boehm, L. Crowl |
N2361 N2493 | C++ Data-Dependency Ordering: Function Annotation | Paul E. McKenney, L. Crowl |
N2298 N2410 | Thread-Safety in the Standard Library | B. Dawes, P. Dimov, H. Sutter |
N2519 | Library thread-safety from a user's point of view | Jeffrey Yasskin |
N2534 | Concurrency Modifications to basic_string |
A Meredith, L Crowl, H Boehm, P Dimov |
N2561 | An Asynchronous Return Buffer | D. Vollmann, H. Hinnant, A. Williams |
New work for Evolution | ||
These papers are ammendments or additions to existing designs, and will require consideration from Evolution before moving forward. While the submission deadline for new topics for Evolution is long past, it is expected some small time must be allocated each meeting to review design decisions as features work their way through Core and into the working paper. | ||
N2575 | Initializer Lists — Alternative Mechanism and Rationale | J. Merrill, D. Vandevoorde |
N2576 | Type-Soundness and Optimization in the Concepts Proposal | Douglas Gregor |
N2581 | Named Requirements for C++0X Concepts | W Brown, J Widman, C Jefferson, A Meredith |
N2582 | Unified Function Syntax | Lawrence Crowl, Alisdair Meredith |
N2583 | Default Move Functions | Lawrence Crowl |
N2584 | Default swap Functions |
Lawrence Crowl |
Background papers for reference | ||
The papers do not contain actual proposals, but rather motivation, rationale and background to support other papers. | ||
N1395 | Aspects of Forwarding (was C++ Support For Delegation) | Lois Goldthwaite |
N1648 | Motivation, Objectives and Design Decisions | Attila Fehér |
N1680 N1738 N1777 N1876 N1911 N1942 N2010 | Memory model for multithreaded C++: Issues | A. Alexandrescu, H. Boehm, K. Henney, B. Hutchings, D. Lea, B. Pugh |
N1815 | ISO C++ Strategic Plan for Multithreading | Lawrence Crowl |
N1834 | A Pleading for Reasonable Parallel Processing Support in C++ | Detlef Vollmann |
N2012 | Thread Subcommittee minutes from Berlin | Lawrence Crowl |
N2075 N2197 | Prism: A Principle-Based Sequential Memory Model for Microsoft Native Code Platforms | H Sutter |
N2138 N2480 | A Less Formal Explanation of the Proposed C++ Concurrency Memory Model | Hans-J. Boehm |
N2176 | Memory Model Rationales | Hans-J. Boehm |
N2338 | Concurrency memory model compiler consequences | Hans-J. Boehm |
N2392 | A Memory Model for C++: Sequential Consistency for Race-Free Programs | Hans-J. Boehm |
N1799 | C++ Language Support for Generic Programming | J. Siek, D. Gregor, R. Garcia, J. Willcock, J. Järvi, A. Lumsdaine |
N1885 | A formalism for C++ | G. Dos Reis, B. Stroustrup |
N1899 | Concept proposal comparison | Matt Austern |
N2221 | An analysis of concept intersection | Bjarne Stroustrup, Gabriel Dos Reis |
N2399 | A Tour of the Concepts Wording | Douglas Gregor |
N1956 | Design Rationale for C++/CLI | H Sutter |
N1976 | Shared dynamic objects : review and issues | Benjamin Kosnik |
N2027 | A Brief Introduction to Rvalue References | Howard Hinnant, Bjarne Stroustrup, Brokek Kozicki |
N2087 | A brief introduction to variadic templates | Doug Gregor |
N2167 | Linux Kernel Reference Counting | Paul E. McKenney |
N2177 | Sequential Consistency for Atomics | Hans-J. Boehm |
N2272 | Optional Sequential Consistency | Nick Maclaren |
N2216 | Report on language support for Multi-Methods and Open-Methods for C++ | P. Pirkelbauer, Y. Solodkyy, B. Stroustrup |
N2417 | C++0x Timing Options for Kona Discussion | Herb Sutter |
N2362 | Converting Memory Fences to N2324 Form | P. McKenney, L. Crowl |
N2466 | WG 14: Towards Attributes for C | N. Stoughton, J. Benito, T. Plum, A. Bijanki, J. Muller |
N2536 | POSIX Liaison Report | Nick Stoughton |
Evolution of current proposals | ||
These papers are the inspiration or history behind the active or accepted proposals. They might have been absorded into a larger proposal to ease taking a whole package through review. They are retained here as they capture a large part of the rationale that will produce C++0x. | ||
N1401 | Atomic operations with multi-threaded environments | Jan Kristoffersen |
N2016 | Should volatile Acquire Atomicity and Thread Visibility Semantics? | Nick McLaren, Hans Boehm |
N2153 N2237 | Memory model for weak ordering | Raúl Silvera, Michael Wong, Paul McKenney, Bob Blainey |
N2195 | Proposed Text for Chapter 29, Atomic Operations Library | Peter Dimov |
N2260 | C++ Data-Dependency Ordering | Paul E. McKenney |
N2359 | C++ Data-Dependency Ordering: Atomics | Paul E. McKenney |
N2360 | C++ Data-Dependency Ordering: Memory Model | Paul E. McKenney |
N2262 | Explicit Memory Fences | R. Silvera, P. Dimov |
N2273 | Non-Memory Actions | Nick Maclaren |
N1445 N1582 N1702 N1717 | Explicit class and default definitions | F. Glassborow, L. Goldthwaite |
N1602 | Class Scope Using Declarations & private Members | Francis Glassborow |
N2123 | Adding the prohibited access specifier to C++0x | Alisdair Meredith |
N1467 N1824 | Extending Aggregate Initialization | Alisdair Meredith, Daniel F. Gutson |
N1493 | Braces Initialization Overloading | Daniel F. Gutson |
N1584 N1701 | Regularizing Initialization Syntax | Francis Glassborow |
N2477 N2532 | Uniform initialization design choices | Bjarne Stroustrup |
N1478 N1527 N1607 N1705 N1978 | Auto, decltype and a new function declaration syntax | J. Järvi, B. Stroustrup, D. Gregor, J. Siek, G. Dos Reis |
N1737 | A Proposal to Restore Multi-declarator auto Declarations | Walter E. Brown |
N1510 N1522 N1536 N1782 N1886 | Concepts - syntax and composition | B. Stroustrup, G. Dos Reis |
N1758 N1798 N1848 N1849 | Concepts for C++0x | J. Siek, D. Gregor et al. |
N2098 N2414 | Scoped Concept maps | J. Siek, J. Widman |
N2161 | Combining concepts | Doug Gregor, Andrew Lumsdaine |
N2520 | Proposed Wording for Concepts (Changes from Revision 3 to Revision 4) | D. Gregor, B. Stroustrup, J. Siek, J. Widman |
N1534 N1642 | Proposed addition of __func__ predefined identifier from C99 | Alex Rosenberg |
N1583 | Inheriting Constructors | F. Glassborow |
N1682 N1907 N2285 | A Multi-threading Library for Standard C++, Revision 2 | Pete Becker |
N1875 | C++ Threads | Lawrence Crowl |
N2090 ; N2178 | Proposed Text for Chapter 30, Thread Support Library | Peter Dimov |
N2094 N2184 | Thread Launching for C++0X | Howard Hinnant |
N2139 | Thoughts on a Thread Library for C++ | Anthony Williams |
N2455 | Thread Cancellation | WG14 |
N1796 N1868 N1961 | Proposal for new for-loop | Thorsten Ottosen |
N1958 | A proposal to add lambda functions to the C++ standard | V Samko |
N2510 | BSI Position on Lambda Functions | BSI |
N2511 | Named Lambdas and Local Functions | Alisdair Meredith |
N2061 N2106 N2229 ; N2107 | Propagating exceptions when joining threads | Beman Dawes; Alisdair Meredith, Jens Maurer |
N2105 | Choosing Keywords | Beman Dawes |
N2173 | Core Extensions for Evolution | Alisdair Meredith |
N2224 | General Attributes for C++ | Alisdair Meredith |
Not quite ready for C++0x timetable, but actively pursued | ||
Papers in this category have been in development and reviewed several times over the evolution of C++0x. However, although there is a strong interest the feature has not quite stabilised fast enough to meet the 2009 target deadline. Work will proceed outside the main committee meetings, and will be picked up with a view to an early adoption. | ||
N1833 N1943 N2128 N2129 N2286 N2287 N2310 | Transparent Garbage Collection for C++ | H. Boehm, M. Spertus |
N2261 | Optimization-robust finalization | H. J. Boehm, M. Spertus |
N2185 | Proposed Text for Parallel Task Execution | Peter Dimov |
N2276 | Thread Pools and Futures | Anthony Williams |
Heading for a separate TR | ||
These topics are deemed too important to wait for another standard after C++0x before being published, but too experimental to be finalised in time for the next Standard. Therefore, these features will be delivered by a technical report at the earliest opportunity. | ||
N1567 N1776 N1839 N1965 N1977 | Decimal Types for C++ | Robert Klarer, P.J. Plauger |
N1736 N1778 N1964 N2006 N2015 N2073 N2074 N2316 | Modules in C++ | Daveed Vandevoorde |
Not ready for C++0x, but open to resubmit in future | ||
Papers in this category have been reviewed in EWG but for various reasons they have not been accepted for C++0x. This may have been a lack of time to finalise the issues, a lack of motivation compared to competing papers, or simply the authors being pulled in different directions. This list is retained as a potential working list for EWG to pick up for the next standard revision. | ||
N1384 ; N1600 ; N1615 | PME: Properties, methods and events | John Wiegley; Daveed Vandevoorde; Lois Goldthwaite |
N1400 N1418 N1428 N1496 | Draft Proposal for Dynamic Libraries in C++ | Pete Becker, Matt Austern |
N2117 N2407 N2425 | Minimal Dynamic Library Support | Lawrence Crowl |
N1408 N1691 | Explicit Namespaces | David Abrahams |
N1792 N1893 N1912 N2103 | A Modest Proposal: Fixing ADL | Herb Sutter, Daveed Vandevoorde |
N1420 | Proposed Addition to C++: Class Namespaces | Carl Daniel |
N1461 | Security and Standard C Libraries | Martyn Lovell |
N1462 | Safe Exceptions and Compiler Security Checks | Brandon Bray |
N1463 N1529 | Draft proposal for adding Multimethods to C++ | Julian Smith |
N1466 | Expliciting default parameters | Daniel Gutson |
N1470 ; N1741 | Extending / checking Switch statements | Daniel Gutson; Francis Glassborow |
N1471 | Reflective Metaprogramming in C++ | Daveed Vandevoorde |
N1524 | Nested Namespace Definition Proposal | Jon Jagger |
N1585 N1716 N1742 | Uniform Calling Syntax (Re-opening public interfaces) | Francis Glassborow |
N1611 | Implicitly-Callable Functions in C++0x | Walter E. Brown |
N1613 N1669 N1773 N1800 N1866 N1867 N1962 | Contract Programming For C++0x | L. Crowl, T. Ottosen, D. Abrahams, J. Widman |
N1614 N1625 N1726 N1740 | Macro scopes | Thomas Plum, Bjarne Stroustrup |
N1664 ; N1703 | Toward Improved Optimization Opportunities in C++0x | W. Brown,M. Paterno; Francis Glassborow |
N1671 N2200 | Overloading Operator.() & Operator.*() | G. Powell, D. Gregor, J. Jarvi |
N1676 ; N2200 | Non-member overloaded copy assignment operator | Bronek Kozicki; G. Powell, D. Gregor, J. Jarvi |
N1695 | A Proposal to Make Pointers to Members Callable | Peter Dimov |
N1696 | Language Support for Restricted Templates | Peter Dimov |
N1706 N1891 N2141 | Toward Opaque typedefs in C++0X | Walter E. Brown; Alisdair Meredith |
N1751 ; N1775 | Reflection in C++ | Detlef Vollmann; Walter E. Brown, et al. |
N1785 | Toward a Proposal for Object Templates in C++0x | Walter E. Brown |
N1825 | Addressing Exception Specifications for Next Generation of C++ | Alisdair Meredith |
N2281 | Digit Separators | Lawrence Crowl |
N2312 N2386 | Namespace Regions | Michael Spertus |
N2332 | Argument Deduction for Constructors | Michael Spertus |
No interest, or superseded by other proposals | ||
These papers have either been superseded by different set of proposals, or were identified as a something we do not want to do. While everyone is free to submit papers they feel strongly about, it is unlikely any of these topics will gain favour for a future standard unless something significantly new is presented with the updated paper. | ||
N1394 | Some proposed extensions to C++ language | David Miller |
N1464 | Anonymous array members | Daniel Gutson |
N1465 | Constant inheritance | Daniel Gutson |
N1468 | Self methods | Daniel Gutson |
N1469 | Inline Constants | Daniel Gutson |
N1492 | Exclusive Inheritance | Daniel Gutson |
N1494 | Pure implementation method declaration | Daniel F. Gutson |
N1827 N2108 N2365 | An Explicit Override Syntax for C++ | C. Uzdavinis, A. Meredith, Jens Maurer |
N1605 | Extending Template Type Parameters I: Namespace and scope | Daniel Gutson |
N1612 N1869 | How we might remove the remaining shortcomings of std::complex<T> | Thorsten Ottosen |
N1694 | A Proposal to Extend the Function Call Operator | Peter Dimov |
N2518 | Compiler Support for type_traits | James Widman |