home
|
C++
|
FAQ
|
technical FAQ
|
publications
|
WG21 papers
|
TC++PL
|
Tour++
|
Programming
|
D&E
|
bio
|
interviews
|
videos
|
quotes
|
applications
|
guidelines
|
compilers
My C++ Standards committee papers
Modified February 23, 2026.
This is an incomplete list of papers that I
(Bjarne Stroustrup ) have written or co-authored
for the C++ standards committee.
Please remember that these are incomplete proposals, discussions of alternatives,
and exploration of the design space.
Note also that these papers were all written
to a specific audience (the members of the C++ standards committee),
at a specific time (relative to the then current draft of the standard),
and as part of a specific discussion.
They are typically not ideal introcutions for a general audience.
Not all has led to or will lead to changes to C++, and most of those will "mutate" significantly
as they progress from idea/proposal to final language change.
The order is roughly reverse chronological.
I aim eventually to gather all of my standard committee papers here.
For more information (in particular for essentially all papers since 1993), see
the WG21 site .
Here is a
recent status
of work of the "Evolution Working Group";
that is, the group (headed by me 1990-2004 and now by Ville Voutilainen) that is processing the proposals for new language features.
Please note that this is a summary, written for the EWG members; not a tutorial.
For a summary of C++11, see my C++11 FAQ .
Michael Wong, Jeff Garland,Paul E. McKenney, Roger Orr, Bjarne Stroustrup, David Vandevoorde:
Strategic Direction for AI in C++: Governance, and Ecosystem .
P4023R0.
2026-02-22.
Michael Wong, Jeff Garland,Paul E. McKenney, Roger Orr, Bjarne Stroustrup, David Vandevoorde:
Guidance on Building Consensus and Converging Proposals .
P2024R0.
2026-02-23.
D. Vandevoorde,
J. Garland,
P. E. McKenney,
R. Orr,
B. Stroustrup, and
M. Wong:
Direction for ISO C++ .
P2000R5.
2026-02-23.
D. Vandevoorde,
J. Garland,
P. E. McKenney,
R. Orr,
B. Stroustrup, and
M. Wong:
Direction for ISO C++29 .
P2000R0.
2026-02-18.
B. Stroustrup:
A type-safety profile .
D3704R0
2026-01-19.
D. Vandevoorde,
J. Garland,
P. E. McKenney,
R. Orr,
B. Stroustrup, and
M. Wong:
Profiles and Safety: a call to action .
P3970R0
2026-01-16.
B. Stroustrup:
What are profiles? .
P3704R0.
2025-05-19.
B. Stroustrup:
Dealing with pointer errors: Note to the C++ standards committee members .
P3651R0.
2025-3-6.
B. Stroustrup:
21st Century C++ .
P3650R0.
2025-3-6.
B. Stroustrup:
Dealing with pointer errors: Separating static and dynamic checking .
P3611R0.
2025-2-1.
B. Stroustrup:
Pattern matching .
P3572R0.
2025-1-12.
B. Stroustrup:
Profile invalidation - eliminating dangling pointers .
P34460.
2024-10-14.
B. Stroustrup:
Profiles syntax .
P3447R0.
2024-10-14.
B. Stroustrup:
We need better performance testing .
P3406R0.
2024-09-22.
B. Stroustrup:
A simpler notion for PM .
P3332R0.
2024-06-18.
B. Stroustrup:
A framework for Profiles development .
P3274R0.
2024-05-5.
Michael Wong, H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde:
To TS or not to TS: that is the question .
P4000R0.
2024-05-22.
B. Stroustrup:
Concrete suggestions for initial Profiles .
P3038R0.
2023-12-16.
B. Stroustrup, G. Dos Reis:
Safety Profiles: Type-and-resource Safe programming in ISO Standard C++ .
P2816R0.
2023-02-16.
H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, M. Wong:
DG opinion on safety for ISO C++ .
P2759R1.
2023-01-23.
Bjarne Stroustrup:
A call to action: Think seriously about "safety"; then do something sensible about it .
P2739R0.
2022-12-6.
B. Stroustrup and G. Dos Reis:
Design Alternatives for Type-and-Resource Safe C++ .
P2687R0.
2022-10-15.
Roger Orr, Howard Hinnant, Roger Orr, Bjarne Stroustrup, Daveed Vandevoorde, and Michael Wong:
Direction for ISO C++ .
P2000R4.
2022-10-15.
Barry Revzin, Bjarne Stroustrup, Cameron DaCamara, Daveed Vandevoorde, Gabriel Dos Reis, Herb Sutter, Jason Merrill, Jonathan Caves, Richard Smith, and Ville Voutilainen:
The Equality Operator You Are Looking For .
P2468R2.
2022-01-15.
B. Stroustrup:
Type-and-resource safety in modern C++ .
P2410r0.
2021-07-12.
B. Stroustrup:
Thoughts on pattern matching .
P2411r0.
2021-07-12.
Stephan T. Lavavej, Gabriel Dos Reis, Bjarne Stroustrup, and Jonathan Wakely:
Standard Library Modules std and std.compat .
P2465R3.
2022-03-11.
B. Stroustrup:
Minimal module support for the standard library .
P2412r0.
2021-07-12.
B. Stroustrup:
C++ -- an Invisible Foundation of Everything .
P2317R0.
2021-02-14.
M. Wong, H. Hinnant, B. Stroustrup, R. Orr, and D. Vandevoorde:
Direction for ISO C++ .
P2000R1.
2020-01-13.
B. Stroustrup:
How can you be so certain? .
P1962R0.
2019-11-18.
B. Stroustrup:
C++ exceptions and alternatives .
P1947r0.
2019-11-18.
H. Hinnant, B. Stroustrup, R. Orr, D. Vandevoorde, and M. Wong:
Direction for ISO C++ (R4) .
P939r4.
2019-10-07.
B. Stroustrup:
What to do about contracts? .
P1711R0.
2019-6-17.
B. Stroustrup:
Don't add to the signed/unsigned mess .
P1491R0.
2019-02-14.
B. Stroustrup:
Subscripts and sizes should be signed .
P1428R0.
2019-01-18.
B. Stroustrup:
Abandon observer_ptr .
P1408R0.
2019-01-21.
H. Hinnant, B. Stroustrup, R. Orr, D. Vandevoorde, and M. Wong:
Direction for ISO C++ (R2) .
P0939R2.
2019-01-21.
B. Stroustrup:
Syntax alternatives from modules .
P0939R1.
2018-11-20.
H. Hinnant, B. Stroustrup, R. Orr, D. Vandevoorde, and M. Wong:
Direction for ISO C++ (R1) .
P0939R1.
2018-10-08.
Ville Voutilainen,
Thomas Koeppe,
Andrew Sutton,
Herb Sutter,
Gabriel Dos Reis,
Bjarne Stroustrup,
Jason Merrill,
Hubert Tong,
Eric Niebler,
Casey Carter,
Tom Honermann, and
Erich Keane:
Yet another approach for constrained declarations .
P1141R0.
2018-06-23.
Bjarne Stroustrup:
A minimal solution to the concepts syntax problems .
P1079.
2018-05-6.
B. Stroustrup:
Remember the Vasa! .
P0977r0.
2018-03-06.
B. Stroustrup:
The Evils of Paradigms .
P0976r0.
2018-03-06.
G. Dos Reis, J. D. Garcia, J. Lakos, A. Meredith, N. Myers, and B. Stroustrup:
Support for contract based programming in C++ .
P0694R3.
2018-02-12.
Marshall Clow, Beman Dawes, Gabriel Dos Reis, Stephan T. Lavavej, Billy O'Neal, Bjarne Stroustrup, and Jonathan Wakely:
Standard Library Modules .
P0581R1.
2018-02-11.
B. Dawes, H. Hinnant, B. Stroustrup, D. Vandevoorde, and M. Wong:
Direction for ISO C++ .
P0939R0.
2018-02-10.
Bjarne Stroustrup:
What do we want to do with reflection? .
P0954r0.
2018-02-11.
Bjarne Stroustrup:
Modules and macros .
P0955r0.
2018-02-11.
Bjarne Stroustrup:
Answers to concept syntax suggestions .
P0956r0.
2018-02-11.
B. Stroustrup:
Function declarations using concepts .
P0694R0.
2017-06-18.
G. Dos Reis, J. D. Garcia, J. Lakos, A. Meredith, N. Myers, B. Stroustrup:
Support for contract based programming in C++ .
P0542R0.
2017-06-16.
Titus Winters, Bjarne Stroustrup, Daveed Vandevoorde, Beman Dawes, Michael Wong, Howard Hinnant:
C++ Stability, Velocity, and Deployment Plans [R0] .
P0684R0.
2017-06-19.
B. Stroustrup:
Alternative concepts .
P0695r0.
2017-02-19
G. Dos Reis, J. D. Garcia, J. Lakos, A. Meredith, N. Myers, B. Stroustrup:
Support for contract based programming in C++ .
P0542R0
2017-02-05.
B. Stroustrup: Concepts: The Future of Generic Programming (or "How to design good concepts and use them well)" .
P0557r1.
2017-01-31.
G. Dos Reis, J. D. Garcia, J. Lakos, A. Meredith, N. Myers, B. Stroustrup:
A Contract Design .
2016-5-27.
Bjarne Stroustrup, Herb Sutter:
Unified Call Syntax Wording .
2016-2-11.
Bjarne Stroustrup, Gabriel Dos Reis:
Operator Dot Wording .
2016-2-13.
Herb Sutter, Bjarne Stroustrup, Gabriel Dos Reis:
Structured Bindings .
2016-2-3.
Herb Sutter, Bjarne Stroustrup, Gabriel Dos Reis:
Structured bindings .
2015-10-15.
Bjarne Stroustrup:
Unified call syntax concerns .
2015-09-27.
Bjarne Stroustrup:
Thoughts about C++17 .
2015-05-15.
Bjarne Stroustrup, Gabriel Dos Reis:
Operator Dot (R2) .
2015-04-09.
Bjarne Stroustrup
Thoughts about Comparisons (R2) .
2015-04-09.
Bjarne Stroustrup:
Default comparisons (R2) .
2015-04-09.
Bjarne Stroustrup, Herb Sutter:
Unified Call Syntax: x.f(y) and f(x,y) 2015-04-12.
Yuriy Solodkyy, Gabriel Dos Reis, and Bjarne Stroustrup:
Pattern Marching for C++ .
2014-11.
This is a set of slides that I used for an evening session to encourage the committee members to start thinking seriously about functional-programming style pattern matching.
Please note that the slides are fundamentally a set of questions and alternatives, rather than a suggested solution.
Unfurtunately, I did not post the slides in a mailing so they were inaccessible to most people.
H. Sutter, B. Stroustrup, G. Dos Reis:
Forwarding References .
N4164.
B. Stroustrup, G. Dos Reis:
Operator Dot .
N4173.
B. Stroustrup:
Call syntax: x.f(y) vs. f(x,y) .
N4174.
B. Stroustrup:
Default comparisons .
N4175.
B. Stroustrup:
Thoughts about Comparisons .
N4176.
A. Sutton:
Concepts Lite Specification .
N3819.
October 2013.
B. Stroustrup:
Alternatives for Array Extensions .
N3810.
October 2013.
A. Sutton, B. Stroustrup, G. Dos Reis:
Concepts Lite: Constraining Templates with Predicates .
N3580.
March 2013.
B. Stroustrup, G. Dos Reis, A. Sutton:
"Static If" Considered .
N3613.
March 2013.
B. Stroustrup and A. Sutton:
A Concept Design for the STL .
N3351==12-0041.
Jonathan Wakely and Bjarne Stroustrup:
Range-based for statements and ADL .
N3257=11-0027.
Option 5 was adopted.
B. Stroustrup:
To which extent can noexcept be deduced?
N3202=10-0192.
Suggestion not adopted because of undesirable complexity.
B. Stroustrup:
Moving right along .
More analysis on generated move operations.
N3201=10-0191.
October 2010. Suggestion not adopted because of undesirable complexity.
B. Stroustrup:
To move or not to move .
An analysis of problems related to generated copy and move operations.
N3174=100164.
October 2010.
Approved.
B. Stroustrup:
An Incomplete Language Feature .
A proposal to allow {} in default arguments.
N3139=10-0129.
September 2010.
Approved for function default argument only (for lack of time to handle template default arguments).
B. Stroustrup:
"New" Value Terminology .
An informal, unnumbered, note explaining work on improving the lvalue/rvalue terminology to take move semantics into account.
April 2010.
B. Stroustrup and L. Crowl:
Defining Move Special Member Functions .
N3044. 2010-0034.
Approved.
B. Stroustrup, A. Meredith, and G. Dos Reis:
Constexpr functions with const reference parameters (a summary) .
N3039. 2010-0029.
Approved with minor improvements.
G. Dos Reis, B. Stroustrup, A. Meredith:
Axioms: Semantics Aspects of C++ Concepts .
N2887.
2009-06-21.
Bjarne Stroustrup:
Defining default copy and move .
N2904.
2009-06-18.
Approved with minor improvements.
Bjarne Stroustrup:
Aggregation headers .
N2905.
2009-06-18.
The important header was rejected.
Bjarne Stroustrup
Simplifying the use of concepts .
N2906.
2009-06-21.
Arguably, this was the paper that caused
concepts to be postponed .
D. Tsafrir, R. Wisniewksi, D. Bacon, B. Stroustrup:
Minimizing Dependencies within Generic Classes for Faster and Smaller Programs .
N2911.
2009-06-19.
The argument for N2913.
R. Klarer, B. Stroustrup, D. Tsafrir, M. Wong:
SCARY Iterator Assignment and Initialization .
N2913.
2009-06-19.
Rejected as too late for C++0x.
G. Dos Reis, B. Stroustrup:
Initializer Lists for Standard Containers (Revision 1) .
N2679.
2008-06-13.
Accepted.
D. Gregor, B. Stroustrup, J. Widman, J. Siek:
Proposed Wording for Concepts (Revision 9) .
N2773.
2008-09-19.
Approved; later removed.
B. Stroustrup:
Uniform initialization design choices (Revision 2) .
N2532.
February 2008.
Improved (mostly by David Vandervoorde and Jason Merrill) and then approved.
J. Stephen Adamczyk, G. Dos Reis, and B. Stroustrup:
Initializer list WP wording (Revision 2) .
N2531.
February 2008.
J. Jarvi, B. Stroustrup, G. Dos Reis:
Decltype (revision 7): proposed wording .
N2343.
July 2007.
D. Miller, H. Sutter, B. Stroustrup:
Strongly Typed Enums (revision 3) .
N2347.
July 2007.
Accepted.
G. Dos Reis, B. Stroustrup:
Constant Expressions in the Standard Library -- Revision 2 .
N2349.
July 2007.
Accepted.
I. McIntosh, M. Wong, R. Mak, R. Klarer, et al.:
User-defined Literals (aka. Extensible Literals (revision 3)) .
N2378.
July 2007.
Accepted.
J. S. Adamczyk, G. Dos Reis, B. Stroustrup:
Initializer lists WP wording .
N2385.
July 2007.
Bjarne Stroustrup and Gabriel Dos Reis:
An analysis of concept intersection .
N2221.
March 2007.
G. Dos Reis, B. Stroustrup:
Initializer Lists for Standard Containers .
N2220.
March 2007.
G. Dos Reis, B. Stroustrup:
Constant Expressions in the Standard Library .
N2219.
March 2007.
P. Pirkelbauer, Y. Solodkyy, B. Stroustrup:
Report on language support for Multi-Methods and Open-Methods for C++ .
N2216.
March 2007.
Bjarne Stroustrup and Gabriel Dos Reis:
Initialer lists (Rev3.) .
N2215.
March 2007.
H. Sutter, B. Stroustrup:
A name for the null pointer: nullptr (revision 3) .
N2214.
March 2007.
Accepted.
H. Sutter, D. Miller, and B. Stroustrup:
Strongly Typed Enums (revision 2) .
N2213.
March 2007.
D. Gregor, B. Stroustrup:
Proposed Wording for Concepts .
N2193.
March 2007.
Bjarne Stroustrup and Gabriel Dos Reis:
Initialer lists (Rev2.) .
N2100.
September 2006.
Revision of N1919.
D. Gregor, B. Stroustrup:
Concepts .
N2042==06-0012 . June 2006.
J. Jarvi, B. Stroustrup, G. Dos Reis:
Deducing the type of variable from its initializer expression (revision 4) .
N1984==06-0054.
June 2006.
("auto").
Approved.
J. Jarvi, B. Stroustrup, G. Dos Reis:
Decltype (revision 5) .
N1978==06-0048. June 2006.
Revision of N1705==04-0145.
Approved.
Bjarne Stroustrup and Gabriel Dos Reis:
Generalized constant expressions (Rev. 3) .
N1980==06-0050. June 2006.
Revision of N1972==06-0042.
Approved.
H. Hinnant, B. Stroustrup, B. Kozicki:
A Brief Introduction to
Rvalue References .
N2027==06-0097. June 2006.
Revision of N1972==06-0042.
Tutorial material.
Bjarne Stroustrup and Gabriel Dos Reis:
Generalized constant expressions (Rev. 2) .
N1972=06-0042. February 2006.
Revision of N1521=03-0104.
Approved.
Jeremiah Willcock et al:
Lambda expressions and closures for C++ .
N1968=06-0038. February 2006.
Discussion of design choices and best effort design.
After a long evolution, lanmbdas were accepted.
Bjarne Stroustrup and Gabriel Dos Reis:
Initialer lists .
December 2005.
G. Dos Reis and B. Stroustrup:
A formalism for C++ .
N1885, Oct. 2005.
G. Dos Reis and B. Stroustrup:
Specifying C++ concepts .
N1886, Oct. 2005.
J. Jarvi, B. Stroustrup and G. Dos Reis:
Deducing the type of a variable
from its initializer expression .
N1894, Oct. 2005.
Approved in principle.
Bjarne Stroustrup and Gabriel Dos Reis:
Initialization and initializers .
September 2005.
An overview of initialization and initializer problems with suggested solutions.
Follow up: N1919, N???, N???, and N???.
Bjarne Stroustrup, and Gabriel Dos Reis:
A concept design (Rev. 1) .
April 2005.
An attempt to synthesize a concept design based on (among other sources) N1510, N1522, and N1536.
Jaakko Jarvi, Bjarne Stroustrup, and Gabriel Dos Reis:
Decltype and auto (revision 4) .
September 2004.
Follow up: N1894.
Bjarne Stroustrup:
#scope: A simple scoping mechanism for the C/C++ preprocessor .
N1614/04-0054.
In retrospect, I think #scope is a bad name for what I'm trying to achieve.
A scope implicitly let in names.
Maybe the proposal would have fared better if it had been called #macro, #nomacro, or #filter.
H. Sutter and B. Stroustrup:
A name for the null pointer: nullptr (revision 2) .
N1601/04-0041.
Bjarne Stroustrup and Gabriel Dos Reis:
Concepts -- Syntax and composition .
October 2003.
An early discussion of how to express concept checking in C++.
Follow up: N1890.
Bjarne Stroustrup and Gabriel Dos Reis:
Concepts -- Design choices for template argument checking .
October 2003.
An early discussion of design criteria for concepts for C++.
Follow up: N1890.
Bjarne Stroustrup:
Concept checking -- A more abstract complement to type checking .
October 2003.
A discussion of models of concept checking.
Follow up: N1890.
G. Dos Reis and B.Stroustrup:
Generalized Initializer Lists
N1509, Sep. 2003.
Follow up: N1919.
Herb Sutter and Bjarne Stroustrup
A name for the null pointer: nullptr .
September 2003.
Lois Goldthwaithe (editor):
Technical Report on C++ Performance .
August 2003.
Bjarne Stroustrup and Gabriel Dos Reis:
Template aliases for C++ .
July 2003.
J. Jarvi and B. Stroustrup:
Mechanisms for querying types of expressions: decltype and auto revisited .
N1527/03-0110.
Bjarne Stroustrup:
Evolution WG issues list .
N1512/03-0095.
The first list of issues for what became C++11.
Bjarne Stroustrup:
Literals for user-defined types .
N1511/03-0094.
This proposal mutated a lot before getting accepted.
J. Jarvi,
B. Stroustrup,
D. Gregor,
J. Siek:
Decltype and auto .
N1478/03-0061.
Bjarne Stroustrup:
The Problem with Default Arguments for Templates .
WG21/N1070 X3J16/97-0032.
Bjarne Stroustrup:
Allocators .
WG21/N0999 X3J16/96-0181.
John Wilkinson, Bjarne Stroustrup:
Working Paper Changes for the Template Compilation Model .
WG21/N0973 X3J16/96-0155R1
Bjarne Stroustrup:
Proposal to Acknowledge that Garbage Collection for C++ is Possible .
WG21/N0932 X3J16/96-0114.
Bjarne Stroustrup:
Separate Compilation Must Stay!
WG21/N0885 X3J16/96-0067.
Bjarne Stroustrup:
Relaxing the Rules for Void .
WG21/N0849 X3J16/96-0031.
Bjarne Stroustrup:
A Standard Adapter to Support Polymorphic Containers .
WG21/N0848 X3J16/96-0030.
Bjarne Stroustrup and Alex Stepanov:
Bring Back the Obvious Definition of count() .
WG21/N0847 X3J16/96-0029.
Bjarne Stroustrup:
Relaxation of Qualified Lookup.
95-0145/N0745.
Bjarne Stroustrup:
A Suggestion for Simplifying the Use of Adaptors.
N0729/95-0129.
Bjarne Stroustrup:
Relaxing the Rules for Namespace::Member
WG21/N0635 X3J16/95-0035.
Bjarne Stroustrup:
Major Template Issues (Note for discussion. Revision 0).
WG21/N0578 X3J16/94-0191.
Bjarne Stroustrup:
Defined Value for T() .
X3J16/93-0157 WG21/N0364.
Bjarne Stroustrup:
New Casts Revisited .
X3J16/93-0142 WG21/N0349.
Bjarne Stroustrup:
Major Template Issues (Note for discussion) .
X3J16/93-0081 WG21/N0288.
Bjarne Stroustrup:
Name Space Management in C++ (revised) .
X3J16/93-0055 WG21/N0262.
B. Sroustrup:
Suggested working document changes for new cast notation.
93-0023/N0231.
Bjarne Stroustrup:
An alternative to old-style casts .
92-0122/N0199.
B. Stroustrup:
Name space management in C++ .
92-0123/N0200.
Bjarne Stroustrup, Martin J. O'Riordan, Andrew Koenig, Jonathan Shopiro:
Proposed Revisions to the Template Specification .
X3J16/92-0133 WG21/N0209.
Bjarne Stroustrup and Dmitry Lenkov:
Run-time type information for C++ (Revised) .
92-0068/N0145.
Bjarne Stroustrup and Dmitry Lenkov:
Run-time type information for C++ .
92-0028/N0105.
Andrew Koenig and Bjarne Stroustrup:
Analysis of overloaded operator.() .
91-0121.
Andrew Koenig and Bjarne Stroustrup:
C++: As close to C as possible but no closer .
91-0089/N0089.
B. Stroustrup:
A detailed proposal for generalization of overriding (draft).
X3J16/90-0067.
B. Stroustrup:
A proposal for generalization of overriding.
X3J16/90-0046.
and of course the reference manual from
The C++ Programming Language (2nd edition, 1991)
and some of the annotations from the ARM .
home
|
C++
|
FAQ
|
technical FAQ
|
publications
|
WG21 papers
|
TC++PL
|
Tour++
|
Programming
|
D&E
|
bio
|
interviews
|
videos
|
quotes
|
applications
|
guidelines
|
compilers