Document number: N2011=06-0071

Alisdair Meredith

State of C++ Evolution (after Berlin 2006 Meeting)

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.

There are no library issue here. This list focuses entirely on changes affecting clauses 1 -> 16.

The papers are summarised in the table following according to these categories:

Integrated into working paper

These propsals are already incorporated into the latest working paper, n2009, although final wording may have been updated in the process.

Final wording under review in Core

These papers are undergoing final scrutiny in Core Working group, and have all been reviewed at least once. Full wording is available.

Accepted by evolution - moving to core

These papers were accepted by EWG at the last meeting, and are progressing to CWG for final review the next meeting.

Active topics in evolution

These topics are still actively being developed, and there is a clear intention to incorporate each one in the next standard.

Still under consideration in evolution, but no clear progress to WP status

These papers have all come under consideration by EWG, and have not yet been deferred or rejected. However they need a strong paper for the next meeting, ideally with proposed wording, or will likely be deferred at that point.

Not ready for C++0x, but encourage work to continue

Papers in this category have been reviewed in EWG, and seen to solve real problems. While it is hoped that work will continue, they clearly are not mature enough to be finalised in time for the next standard.

No active interest today, but open to resubmit in future

These papers were presented, but failed to spark interest. There is no reason these topics should not be resubmitted in the future, but there is no intention to revisit these topics either. Any future submission should include a strong motivation and possible futher use cases that were not considered first time around.

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 unless something significantly new is presented with the updated paper.

Background papers for reference

The papers do not contain actual proposals, but rather motivation and background to support other papers.
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. Proposals in a green font have advanced a category since the last meeting, those in red have moved back.

WG21 Number(s) Title Authors
Integrated into working paper
N1381 N1604 N1617 N1720 static_assert R. Klarer, J. Maddock, B. Dawes, H. Hinnant
N1448 N1960 N1987 Extern template Matt Marcus, Garbriel Dos Reis, John Spicer
N1520 N1616 N1722 N1791 Extended friend Declarations William M. Miller
N1545 N1566 N1653 Synchronizing the C++ preprocessor with C99 Clark Nelson, Paul Mensonides
N1564 N1627 "Conditionally-Supported Behavior" William M. Miller
N1565 N1693 N1735 N1811 Adding the long long type to C++ J. Stephen Adamczyk
N1581 N1618 N1895 Delegating Constructors H. Sutter, F. Glassborow
N1610 Clarification of Initialization of Class Objects by rvalues D. Abrahams, G. Powell
N1649 N1699 N1757 Right Angle Brackets Daveed Vandevoorde
N1721 N1794 N1894 Deducing the type of variable from its initializer expression J. Jaarvi, B. Stroustrup, G. Dos Reis
N1737 A Proposal to Restore Multi-declarator auto Declarations Walter E. Brown
Proposed wording under review in Core
N1377 N1385 N1690 N1770 N1855 A Proposal to Add an Rvalue Reference to the C++ Language H. Hinnant, P. Dimov, D. Abrahams, J. Adamczyk, A. Hommel
N1478 N1527 N1607 N1705 Decltype (and auto) J. Järvi, B. Stroustrup, D. Gregor, J. Siek, G. Dos Reis
N1528 Syntactic Disambiguation Using the Template Keyword John H. Spicer
N1546 N1877 Adding Alignment Support to the C++ Programming Language Attila (Farkas) Fehér
N1628 N1823 New Character Types in C++ Lawrence Crowl
N1746 Adding extended integer types to C++ J. Stephen Adamczyk
Accepted by evolution - moving to core in Berlin
N1534 N1642; N1970 Proposed addition of __func__ predefined identifier from C99 Alex Rosenberg; Alisdair Meredith
N1592 Explicit Conversion Operators Lois Goldthwaite
Active topics in evolution
N1400 N1418 N1428 N1496 Draft Proposal for Dynamic Libraries in C++ Pete Becker, Matt Austern
N1736 N1778 Modules in C++ Daveed Vandevoorde
N1401 Atomic operations with multi-threaded environments Jan Kristoffersen
N1680 N1738 N1777 N1876 N1911 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
N1874 Thread-Local Storage Lawrence Crowl
N1406 N1449N1451 N1489 Template aliases for C++ B. Stroustrup, G. Dos Reis, Mat Marcus, Walter E. Brown, Herb Sutter
N1408 N1691 Explicit Namespaces David Abrahams
N1792 N1893 N1912 A Modest Proposal: Fixing ADL Herb Sutter, Daveed Vandevoorde
N1445 N1582 N1702 N1717 Explicit class and default definitions F. Glassborow, L. Goldthwaite
N1467 N1824 Extending Aggregate Initialization Alisdair Meredith, Daniel F. Gutson
N1493 N1509 N1890 N1919 Initializer lists Bjarne Stroustrup, G. Dos Reis, Daniel F. Gutson
N1584 N1701 Regularizing Initialization Syntax Francis Glassborow
N1511 N1892 Extensible Literals I. McIntosh, M. Wong, R. Mak, Bjarne Stroustrup
N1583; N1898 Inheriting Constructors Francis Glassborow; M. Michaud, M. Wong
N1488 N1601 A name for the null pointer: nullptr H. Sutter, B. Stroustrup
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.
N1899 Concept proposal comparison Matt Austern
N1521 Generalized Constant Expressions Gabriel Dos Reis
N1513 N1579 N1719 Strongly Typed Enums H. Sutter, D. Miller
N1613 N1669 N1773 N1800 N1866 N1867 Contract Programming For C++0x L. Crowl, T. Ottosen, D. Abrahams, J. Widman
N1614 N1625 N1726 N1740 Macro scopes Thomas Plum, Bjarne Stroustrup
N1706 N1891 Toward Opaque typedefs in C++0X Walter E. Brown
N1796 N1868 Proposal for new for-loop Thorsten Ottosen
N1833 Transparent Garbage Collection for C++ H. Boehm, M. Spertus
N1958; N1968 Lambda expressions and closures for C++ V Samko; J Willcock, J Järvi, D Gregor, A Lumsdaine
Still under consideration in evolution, but no clear progress to WP status
N1427 Making Local Templates more Useful Anthony Williams
N1611 Implicitly-Callable Functions in C++0x Walter E. Brown
N1785 Toward a Proposal for Object Templates in C++0x Walter E. Brown
N1664; N1703 Toward Improved Optimization Opportunities in C++0x W. Brown,M. Paterno; Francis Glassborow
N1676 Non-member overloaded copy assignment operator Bronek Kozicki
N1727 Changing Undefined Behavior into Diagnosable Errors William M. Miller
N1784 N1821 Extending Move Semantics To *this (Revision 2) D. Vandevoorde, B. Kozicki
N1526 Proposal to add namespace references to C++ Benjamin Kosnik
N1483 N1603 N1704 Variadic Templates D. Gregor, J. Järvi, G. Powell
N1524 Nested Namespace Definition Proposal Jon Jagger
N1494; N1827 An Explicit Override Syntax for C++ Daniel F. Gutson; C. Uzdavinis, A. Meredith
N1671 Overloading Operator.() & Operator.*() G. Powell, D. Gregor, J. Jarvi
Heading for a separate TR
N1567 N1776 N1839 Decimal Types for C++ Robert Klarer, P.J. Plauger
Not ready for C++0x, but encourage work to continue
N1751; N1775 Reflection in C++ Detlef Vollmann; Walter E. Brown, et al.
No active interest today, but open to resubmit in future
N1384; N1600; N1615 PME: Properties, methods and events John Wiegley; Daveed Vandevoorde; Lois Goldthwaite
N1440 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
N1585 N1716 N1742 Uniform Calling Syntax (Re-opening public interfaces) Francis Glassborow
N1602 Class Scope Using Declarations & private Members Francis Glassborow
N1696 Language Support for Restricted Templates Peter Dimov
N1825 Addressing Exception Specifications for Next Generation of C++ Alisdair Meredith
N1694 A Proposal to Extend the Function Call Operator Peter Dimov
N1695 A Proposal to Make Pointers to Members Callable Peter Dimov
No interest, or superseded by other proposals
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
N1605 Extending Template Type Parameters I: Namespace and scope Daniel Gutson
N1612 How we might remove the remaining shortcomings of std::complex<T> Thorsten Ottosen
N1869 Wording for imaginary numbers Thorsten Ottosen
Background papers for reference
N1395 Aspects of Forwarding (was C++ Support For Delegation) Lois Goldthwaite
N1648 Motivation, Objectives and Design Decisions Attila Fehér
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