Bjarne Stroustrup C++ 之父提交到C++标准委员会的论文(papers)
C++ 之父,美国国家工程院、ACM、IEEE 院士,被誉为“近20 年来计算机工业最具影响力的20 人”。 Bjarne Stroustrup 于1979 年获得剑桥大学计算机博士学位,毕业后加入贝尔实验室,在那里发明了C++。 他的研究领域包括:分布式系统、编程语言、软件开发工具。
My C++ Standards committee papers
Modified July 27, 2021.
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.
- B. Stroustrup: Type-and-resource safety in modern C++. P2410r0. 2021-07-12.
- B. Stroustrup: Thoughts on pattern matching. P2411r0. 2021-07-12.
- 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 Köppe, 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.

浙公网安备 33010602011771号