Document number: N2705=08-0215
Alisdair Meredith
2008年07月29日
State of C++ Evolution (Mid-term 2008 Mailing)
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-Antipolis 2008 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
N2706. Note that most of the overlap is
related to threading and atomic libraries.
Note on progress
A clear statement of intent was made to complete work on all features for
the new standard and distribute a CD for ISO ballot following the San
Francisco meeting in 2008, followed by an FCD for ballot at the end of 2009
proceeding to FDIS and final publication in late 2010.
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,
and replaced by N2661.
A second proposed compromise to meet the timetable is the scaling back
of the garbage collection feature. This has now been adopted as
N2670.
The third compromise of a reduce scope 'asynchronous return buffer' was
presented to the Library Working Group in Bellevue, and is close to final
form in N2671, which has been held back one
additional meeting to reduce complexity of the exception hierarchy used.
Key to the tables
Papers have been grouped according to theme, and related papers joined
into the same row, even when submitted by different authors. The intent is
to capture the feature, rather than the workflow. Papers are ordered by
theme, and themes ordered by document number for the first submission on
that theme.
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,
N2691, or the project editor
has been directed to include them in the next draught.
N1610
Clarification of Initialization of Class Objects by rvalues
D. Abrahams, G. Powell
N1448
N1960
N1987
Extern template
Matt Marcus, Garbriel Dos Reis, John Spicer
N2488
N2555
Extending Variadic Template Template Parameters
D. Gregor, E. Niebler
N2656
Core issue 654: Convertibility of 0-literal
H. Sutter, B. Stroustrup
N1545
N1566
N1653
Synchronizing the C++ preprocessor with C99
Clark Nelson, Paul Mensonides
N1564
N1627
"Conditionally-Supported Behavior"
William M. Miller
N1727
Changing Undefined Behavior into Diagnosable Errors
William M. Miller
N1746
N1988
Adding extended integer types to C++
J. Stephen Adamczyk
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
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
N2561
N2658
Constness of lambda functions
J Järvi, P Dimov, J Freeman
N1970
N2202
N2251
N2340
Proposed addition of __func__ predefined identifier from C99
Alisdair Meredith, J Maurer
N2492
N2556
N2664
C++ Data-Dependency Ordering: Atomics and Memory Model
P. McKenney, H.-J. Boehm, L. Crowl
N2096
N2179
Propagating exceptions when joining threads
Peter Dimov
N2115
N2343
Decltype
J. Järvi, B. Stroustrup, D. Gregor, J. Siek, G. Dos Reis
N2170
Universal Character Names in Literals
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
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
N2481
N2527
N2585
N2586
N2670
Minimal Support for Garbage Collection and Reachability-Based Leak
Detection
H.-J. Boehm, M. Spertus, C.Nelson
N2634
Solving the SFINAE problem for expressions
J Spicer, S Adamczyk
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.
N1511
N1892
N2282
N2378
Extensible Literals
I. McIntosh, M. Wong, R. Mak, R.Klarer Bjarne Stroustrup
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 post-meeting mailing (so the final update may be
in this current mailing, or the next.)
N2499
N2568
N2687
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
N2605
Changing some "undefined behavior" into "ill-formed"
Tom Plum
N2631
Resolving the difference between C and C++ with regards to object
representation of integers
James Kanze
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
N2361
N2493
N2643
C++ Data-Dependency Ordering: Function Annotation
Paul E. McKenney, L. Crowl
N2633
Improved support for bidirectional fences
Peter Dimov
N2534
N2647
N2668
Concurrency Modifications to
basic_string
A. Meredith, H. Boehm, L. Crowl, P. Dimov, D. Krügler
N2561
An Asynchronous Return Buffer
D. Vollmann, H. Hinnant, A. Williams
N2633
Improved support for bidirectional fences
Peter Dimov
N2561
N2627
N2671
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.
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
N2646
Concept Implication and Requirement Propagation
Peter Gottschling
N2693
Requirements on programs and backwards compatibility
Jens Maurer
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
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
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
N2575
N2640
Initializer Lists — Alternative Mechanism and Rationale
J. Merrill, D. Vandevoorde
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
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
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.
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.
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
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
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
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