Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Open access

Thriving in a crowded and changing world: C++ 2006–2020

Published: 12 June 2020 Publication History

Abstract

By 2006, C++ had been in widespread industrial use for 20 years. It contained parts that had survived unchanged since introduced into C in the early 1970s as well as features that were novel in the early 2000s. From 2006 to 2020, the C++ developer community grew from about 3 million to about 4.5 million. It was a period where new programming models emerged, hardware architectures evolved, new application domains gained massive importance, and quite a few well-financed and professionally marketed languages fought for dominance. How did C++ -- an older language without serious commercial backing -- manage to thrive in the face of all that?
This paper focuses on the major changes to the ISO C++ standard for the 2011, 2014, 2017, and 2020 revisions. The standard library is about 3/4 of the C++20 standard, but this paper's primary focus is on language features and the programming techniques they support.
The paper contains long lists of features documenting the growth of C++. Significant technical points are discussed and illustrated with short code fragments. In addition, it presents some failed proposals and the discussions that led to their failure. It offers a perspective on the bewildering flow of facts and features across the years. The emphasis is on the ideas, people, and processes that shaped the language.
Themes include efforts to preserve the essence of C++ through evolutionary changes, to simplify its use, to improve support for generic programming, to better support compile-time programming, to extend support for concurrency and parallel programming, and to maintain stable support for decades' old code.
The ISO C++ standard evolves through a consensus process. Inevitably, there is competition among proposals and clashes (usually polite ones) over direction, design philosophies, and principles. The committee is now larger and more active than ever, with as many as 250 people turning up to week-long meetings three times a year and many more taking part electronically. We try (not always successfully) to mitigate the effects of design by committee, bureaucratic paralysis, and excessive enthusiasm for a variety of language fashions.
Specific language-technical topics include the memory model, concurrency and parallelism, compile-time computation, move-semantics, exceptions, lambda expressions, and modules. Designing a mechanism for specifying a template's requirements on its arguments that is sufficiently flexible and precise yet doesn't impose run-time costs turned out to be hard. The repeated attempts to design ``concepts'' to do that have their roots back in the 1980s and touch upon many key design issues for C++ and for generic programming.
The description is based on personal participation in the key events and design decisions, backed by the thousands of papers and hundreds of meeting minutes in the ISO C++ standards committee's archives.

References

[1]
David Abrahams, Rani Sharoni, and Doug Gregor. 2010. Allowing Move Constructors to Throw (Rev. 1). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3050. 12 March 2010. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2010/n3050.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[2]
ADAS Wikipedia 2020. ADAS: Advanced driver-assistance systems. https://en.wikipedia.org/wiki/Advanced_driverassistance_systems (also at Internet Archive 9 May 2019 04:16:15 ).
[3]
James Adcock. 1990. Request for Consideration – Overloadable Unary operator.(). 8 Oct. 1990. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/1990/WG21%201990/X3J16_90%20WG21%20Request%20for%20Consideration%20-%20Overloadable%20Unary%20operator.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[4]
Andrei Alexandrescu, Hans Boehm, Kevlin Henney, Doug Lea, and Bill Pugh. 2004. Memory model for multithreaded C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1680. 10 Sept. 2004. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2004/n1680.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[5]
Matthew Austern. 2001. A Proposal to Add Hashtables to the Standard Library. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1326. 17 Oct. 2001. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2001/n1326.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[6]
Autosar 2020. AUTOSAR: The standardized software framework for intelligent mobility (website). https://www.autosar.org/ (also at Internet Archive 23 Aug. 2019 18:35:20 ). AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development partnership of vehicle manufacturers, suppliers, service providers and companies from the automotive electronics, semiconductor and software industry.
[7]
Autosar Wikipedia 2020. AUTOSAR (AUTomotive Open System ARchitecture). https://en.wikipedia.org/wiki/AUTOSAR (also at Internet Archive 7 Aug. 2019 19:39:43 ).
[8]
Lewis Baker. 2019. Coroutines TS Simplifications. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1477R1. 12 Feb. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1477r1.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[9]
D. W. Barron, J. N. Buxton, D. F. Hartley, E. Nixon, and C. Strachey. 1963. The Main Features of CPL. The Computer Journal 6, 2 (Aug.), 134–143. 0010-4620
[10]
JF Bastien. 2018. Signed Integers are Two’s Complement. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0907R0. 9 Feb. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0907r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[11]
Mark Batty, Mike Dodds, and Alexey Gotsman. 2013. Library Abstraction for C/C++ Concurrency. In Proceedings of the 40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Rome, Italy, Jan.) (POPL ’13). Association for Computing Machinery, New York, NY, USA, 235–248. 978-1450318327
[12]
Mark Batty, Kayvan Memarian, Scott Owens, Susmit Sarkar, and Peter Sewell. 2012. Clarifying and Compiling C/C++ Concurrency: From C++11 to POWER. In Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Philadelphia, PA, USA, Jan.) (POPL ’12). Association for Computing Machinery, New York, NY, USA, 509–520. 978-1450310833
[13]
M. Batty, S. Owens, S. Sarkar, P. Sewell, and T. Weber. 2010. Mathematizing C++ Concurrency: The Post-Rapperswil Model. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3132. 23 Aug. 2010. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2010/n3132.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[14]
Mark Batty, Scott Owens, Susmit Sarkar, Peter Sewell, and Tjark Weber. 2011. Mathematizing C++ Concurrency. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Austin, Texas, USA, Jan.) ( POPL ’11). Association for Computing Machinery, New York, NY, USA, 55–66. 978-1450304900
[15]
Pete Becker. 2004. A Multi-threading Library for Standard C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1682. 10 Sept. 2004. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2004/n1682.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[16]
Pete Becker (Ed.). 2009. Working Draft, Standard for Programming Language C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2914. 2 June 2009. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2009/n2914.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[17]
Pete Becker (Ed.). 2011. ISO/IEC 14882:2011: Information Technology — Programming languages — C++. ISO (International Organization for Standardization), Geneva, Switzerland (Sept.). 1338 book pages. https://www.iso.org/standard/50372. html Status: withdrawn.
[18]
Joshua Berne. 2019. “Axiom” is a False Friend. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1672R0. 16 June 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1672r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[19]
Joshua Berne, Nathan Burgers, Hyman Rosen, and John Lakos. 2018. Contract Checking in C++: A (long-term) Road Map. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1332R0. 26 Nov. 2018. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2018/p1332r0.txt (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[20]
Joshua Berne and John Lakos. 2018a. Assigning Concrete Semantics to Contract-Checking Levels at Compile Time. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1333R0. 26 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2018/p1333r0.txt (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[21]
Joshua Berne and John Lakos. 2018b. Specifying Concrete Semantics Directly in Contract-Checking Statements. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1334R0. 26 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2018/p1334r0.txt (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[22]
Joshua Berne and John Lakos. 2019. Contracts That Work. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1429R2. 16 June 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1429r2.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[23]
Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, and Dawson Engler. 2010. A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World. Commun. ACM 53, 2 (Feb.), 66–75. 0001-0782
[24]
Peter Bindels, Ben Craig, Steve Downey, Rene Rivera, Tom Honermann, Corentin Jabot, and Stephen Kelly. 2018. Concerns about module toolability. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1427R0. 20 Nov. 2018. http: //www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1427r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[25]
Hans Boehm and Michael Spertus. 2005. Transparent Garbage Collection for C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1833. 24 June 2005. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2005/n1833.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[26]
Hans-J. Boehm, Mike Spertus, and Clark Nelson. 2008. Minimal Support for Garbage Collection and Reachability-Based Leak Detection (revised). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2586. 16 March 2008. http: //www.open- std.org/jtc1/sc22/wg21/docs/papers/2008/n2586.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[27]
Vicente Botet and JF Bastien. 2018. std::expected. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0323R6. 2 April 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0323r6.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[28]
Lubomir Bourdev and Jaakko Järvi. 2011. Efficient Run-Time Dispatching in Generic Programming with Minimal Code Bloat. Science of Computer Programming 76, 4 (April), 243–257.
[29]
Walter E. Brown, Mark Fischler, Jim Kowalkowski, and Marc Paterno. 2006. Random Number Generation in C++0X: A Comprehensive Proposal. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1932. 23 Feb. 2006. http: //www.open- std.org/jtc1/sc22/wg21/docs/papers/2006/n1932.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[30]
Build2 2014–2020. Build2, an open source, cross-platform build toolchain for developing and packaging C and C++ code. (website). http://build2.org/ (also at Internet Archive 17 Dec. 2019 16:03:15 ). build2 is an open source (MIT), cross-platform build toolchain for developing and packaging C and C++ code. It is a hierarchy of tools that includes the build system, package dependency manager (for package consumption), and project dependency manager (for project development).
[31]
Casey Carter. 2018. Standard Library Concepts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0898R0. 12 Feb. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0898r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[32]
Cevelop 2014–2020. Cevelop: An Eclipse-based IDE (website; initial release: 21 July 2014). https://www.cevelop.com/ (also at Internet Archive 10 Oct. 2019 02:56:01 ). IDE++: Cevelop extends Eclipse CDT with many additional features: CUTE unit testing with Test Driven Development support, new refactorings and quick fixes, and much more. Cevelop comes with many tools to upgrade your code to C++11/14.
[33]
Matúš Chochlík. 2014. Static reflection. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3996. 26 May 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n3996.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[34]
Matúš Chochlík. 2015. A case for strong static reflection. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4452. 11 April 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/n4452.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[35]
Matúš Chochlík and Axel Naumann. 2016. Static reflection (revision 4). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0194R0. 8 Feb. 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0194r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[36]
Matúš Chochlík, Axel Naumann, and David Sankel. 2017. Static Reflection in a Nutshell. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0578R1. 18 June 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0578r1. html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[37]
Clion Wikipedia 2020. JetBrains (formerly IntelliJ Software). https://en.wikipedia.org/wiki/JetBrains (also at Internet Archive 10 April 2020 22:12:43 ).
[38]
Marshall Clow, Beman Dawes, Gabriel Dos Reis, Stephan T. Lavavej, Billy O’Neal, Bjarne Stroustrup, and Jonathan Wakely. 2018. Standard Library Modules. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0581R1. 11 Feb. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0581r1.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[39]
Jonathan Coe and Roger Orr. 2015. Extension methods for C++ (Uniform-function-calling syntax lite). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0079R0. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/ 2015/p0079r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[40]
Conan 2016–2020. Conan, the C / C++ Package Manager for Developers (website). https://conan.io/ (also at Internet Archive 28 Jan. 2020 04:44:48 ). The open source, decentralized and multi-platform package manager to create and share all your native binaries.
[41]
Melvin E. Conway. 1963. Design of a Separable Transition-Diagram Compiler. Commun. ACM 6, 7 (July), 396–408. 0001-0782
[42]
Coverity 2002–2020. Coverity: static analysis tools (website). https://scan.coverity.com/ (also at Internet Archive 5 March 2020 17:57:39 ). Find and fix defects in your Java, C/C++, C#, JavaScript, Ruby, or Python open source project for free. Test every line of code and potential execution path. The root cause of each defect is clearly explained, making it easy to fix bugs. Integrated with GitHub. More than 6600 open source projects and 33000 developers use Coverity Scan.
[43]
Cppreference 2011–2020. Cppreference: An online reference for the C++ language and standard library (website). https: //en.cppreference.com/w/Main_Page (also at Internet Archive 31 March 2020 00:33:10 ). Our goal is to provide programmers with a complete online reference for the C and C++ languages and standard libraries, i.e., a more convenient version of the C and C++ standards.
[44]
Lawrence Crowl. 2009. Reaching Scope of Lambda Expressions. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2957. 25 Sept. 2009. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2009/n2957.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[45]
Lawrence Crowl. 2013. Digit Separators. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3661. 19 April 2013. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2013/n3661.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[46]
Lawrence Crowl. 2015a. Comparison in C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4367. 8 Feb. 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/n4367.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[47]
Lawrence Crowl. 2015b. Handling Disappointment in C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0157R0. 7 Nov. 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/p0157r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[48]
Lawrence Crowl. 2018. Ambiguity and Insecurities with Three-Way Comparison. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1380R0. 26 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1380r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[49]
Lawrence Crowl and Thorsten Ottosen. 2006. Proposal to add Contract Programming to C++ (revision 4). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1962. 25 Feb. 2006. http://www.open- std.org/jtc1/sc22/wg21/docs/ papers/2006/n1962.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[50]
Lawrence Crowl, Richard Smith, Jeff Snyder, and Daveed Vandevoorde. 2013. Single-Quotation-Mark as a Digit Separator. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3781. 25 Sept. 2013. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2013/n3781.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[51]
Ivan Čukić. 2018. Functional Programming in C++: How to improve your C++ programs using functional techniques. Manning Publications, Shelter Island, NY, USA. 320 book pages. 978-1617293818
[52]
Krysztof Czarnecki and Ulrich Eisenecker. 2000. Generative Programming: Methods, Tools, and Applications. Addison-Wesley Professional, Reading, Massachussets, USA. 864 book pages. 978-0201309775
[53]
Beman Dawes. 2006. Raw String Literals. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2053. 6 Sept. 2006. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2006/n2053.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[54]
Beman Dawes (Ed.). 2014. Programming languages — C++ — File System Technical Specification. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4100. 4 July 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4100. pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[55]
Beman Dawes (Ed.). 2015. ISO/IEC TS 18822:2015: Programming languages — C++ — File System Technical Specification. ISO (International Organization for Standardization), Geneva, Switzerland (July). 63 book pages. https://www.iso.org/ standard/63483.html Status: withdrawn.
[56]
Beman Dawes, Howard Hinnant, Bjarne Stroustrup, David Vandevoorde, and Michael Wong. 2018. Direction for ISO C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0939R0. 10 Feb. 2018. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2018/p0939r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[57]
Beman Dawes, Eric Niebler, and Casey Carter. 2016. Iterator Facade Library Proposal for Ranges. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0186R0. 11 Feb. 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/ p0186r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[58]
Beman G. Dawes. 1998. Proposal for a C++ Library Repository Web Site. 6 May 1998. https://www.boost.org/users/proposal. pdf (also at Internet Archive 16 Dec. 2019 15:10:40 ).
[59]
Jeffrey Dean and Sanjay Ghemawat. 2004. MapReduce: Simplified Data Processing on Large Clusters. In Proceedings of the 6th Symposium on Operating Systems Design and Implementation (San Francisco, California, USA, Dec.) (OSDI ’04). USENIX Association, Berkeley, California, USA, 137–149. https://www.usenix.org/legacy/events/osdi04/tech/full_papers/dean/ dean.pdf (also at Internet Archive 8 Feb. 2020 05:00:02 ).
[60]
Jeffrey Dean and Sanjay Ghemawat. 2008. MapReduce: Simplified Data Processing on Large Clusters. Commun. ACM 51, 1 (Jan.), 107–113. 0001-0782
[61]
James C. Dehnert and Alexander Stepanov. 2000. Fundamentals of Generic Programming. LNCS, Vol. 1766. Springer-Verlag, Berlin, 1–11. 978-3-540-41090-4
[62]
Peter Dimov, Beman Dawes, and Greg Colvin. 2003. A Proposal to Add General Purpose Smart Pointers to the Library Technical Report. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1431. 28 Feb. 2003. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2003/n1431.htm (also at Internet Archive 24 Dec. 2016 19:20:32 ).
[63]
Peter Dimov, Louis Dionne, Nina Ranns, Richard Smith, and Daveed Vandevoorde. 2019. More constexpr containers. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0784R5. 21 Jan. 2019. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2019/p0784r5.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[64]
Peter Dimov and Vassil Vassilev. 2018. Allowing Virtual Function Calls in Constant Expressions. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1064R0. 4 May 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/ p1064r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[65]
Louis Dionne. 2016. Lambdas in unevaluated contexts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0315R0. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0315r0.pdf (also at Internet Archive 21 April 2020 02:00:28 ).
[66]
Louis Dionne. 2017. Familiar template syntax for generic lambdas. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0428R2. 13 July 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0428r2.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[67]
Louis Dionne. 2018. Making std::vector constexpr. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1004R1. 7 Oct. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1004r1.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[68]
Louis Dionne and David Vandevoorde. 2018. Changing the active member of a union inside constexpr. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1330R0. 10 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2018/p1330r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[69]
Gabriel Dos Reis. 2003. Generalized Constant Expressions. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1521. 21 Sept. 2003. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2003/n1521.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[70]
Gabriel Dos Reis. 2009. IPR: Compiler-neutral Internal Program Representation for C++ (code repository). http://github. com/GabrielDosReis/ipr (also at Internet Archive 10 Jan. 2019 00:58:20 ).
[71]
Gabriel Dos Reis. 2012. A System for Axiomatic Programming. In Intelligent Computer Mathematics: 11th International Conference (CICM 2012) (Bremen, Germany, July). Springer-Verlag, Berlin, Germany, 295–309. 978-3-642-31373-8
[72]
Gabriel Dos Reis (Ed.). 2018. Working Draft, Extensions to C++ for Modules. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4720. 29 Jan. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/n4720.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[73]
Gabriel Dos Reis, J-Daniel Garcia, John Lakos, Alisdair Meredith, Nathan Myers, and Bjarne Stroustrup. 2016a. A Contract Design. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0380R0. 28 May 2016. http://www.open- std.org/ jtc1/sc22/wg21/docs/papers/2016/p0380r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[74]
Gabriel Dos Reis, J-Daniel Garcia, John Lakos, Alisdair Meredith, Nathan Myers, and Bjarne Stroustrup. 2018. Support for contract-based programming in C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0542R4. 2 April 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0542r4.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[75]
Gabriel Dos Reis, Mark Hall, and Gor Nishanov. 2014. A Module System for C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4047. 27 May 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4047.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[76]
Gabriel Dos Reis and Mat Marcus. 2003. Proposal to add template aliases to C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1449. 7 April 2003. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2003/n1449.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[77]
Gabriel Dos Reis, Nathan Sidwell, Richard Smith, and David Vandevoorde. 2019. Modules are ready. 14 Feb. 2019. Note on the WG21 mailing list.
[78]
Gabriel Dos Reis and Richard Smith. 2018a. Modules for Standard C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1087R0. 7 May 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1087r0.pdf (also at Internet Archive 21 April 2020 03:04:09 ).
[79]
Gabriel Dos Reis and Richard Smith. 2018b. Plan of Record for Making C++ Modules Available in C++ Standards. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0983R0. 1 April 2018. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2018/p0983r0.pdf (also at Internet Archive 21 April 2020 16:08:45 ).
[80]
Gabriel Dos Reis and Bjarne Stroustrup. 2005a. A Formalism for C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1885. 20 Oct. 2005. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2005/n1885.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[81]
Gabriel Dos Reis and Bjarne Stroustrup. 2005b. Specifying C++ concepts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1886. 20 Oct. 2005. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2005/n1886.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[82]
Gabriel Dos Reis and Bjarne Stroustrup. 2006. Specifying C++ Concepts. In Conference Record of the 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Charleston, South Carolina, USA, Jan.) (POPL ’06). Association for Computing Machinery, New York, NY, USA, 295–308. 1595930272
[83]
Gabriel Dos Reis and Bjarne Stroustrup. 2007. Constant Expressions in the Standard Library. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2219. 11 March 2007. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2007/n2219.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[84]
Gabriel Dos Reis and Bjarne Stroustrup. 2010. General Constant Expressions for System Programming Languages. In Proceedings of the 2010 ACM Symposium on Applied Computing (Sierre, Switzerland, March) (SAC ’10). Association for Computing Machinery, New York, NY, USA, 2131–2136. 978-1605586397
[85]
Gabriel Dos Reis and Bjarne Stroustrup. 2011. A Principled, Complete, and Efficient Representation of C++. Mathematics in Computer Science 5, 3 (Sept.), 335–356. 1661-8270
[86]
Gabriel Dos Reis, Bjarne Stroustrup, and Alisdair Meredith. 2009. Axioms: Semantics Aspects of C++ Concepts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2887. 21 June 2009. http://www.open- std.org/jtc1/sc22/wg21/docs/ papers/2009/n2887.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[87]
Gabriel Dos Reis, Herb Sutter, and Jonathan Caves. 2016b. Refining Expression Evaluation Order for Idiomatic C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0145R2. 3 March 2016. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2016/p0145r2.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[88]
Robert Douglas and Corentin Jabot. 2019. Adopt source location from Library Fundamentals V3 for C++20. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1208R5. 17 June 2019. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2019/p1208r5.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[89]
Stefanus du Toit (Ed.). 2014. ISO/IEC 14882:2014: Information Technology — Programming languages — C++. ISO (International Organization for Standardization), Geneva, Switzerland (Dec.). 1358 book pages. https://www.iso.org/standard/64029.html Status: withdrawn.
[90]
ECMA International. 2005. C++/CLI Language Specification. ECMA International, Geneva, Switzerland (Dec.). https: //www.ecma- international.org/publications/files/ECMA- ST/ECMA- 372.pdf (also at Internet Archive 13 April 2019 01:09:02 ). ECMA Standard ECMA-372.
[91]
Robert Klarer (editor). 2007. Extension for the programming language C++ to support decimal floating-point arithmetic. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2198. 12 March 2007. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2007/n2198.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ). ISO/IEC WDTR 24733.
[92]
David Eisenbud, Daniel R. Grayson, Michael Stillman, and Bernd Sturmfel (Eds.). 2001. Computations in Algebraic Geometry with Macaulay 2. Algorithms and Computation in Mathematics, Vol. 8. Springer, Berlin, Germany (Oct.). 345 book pages. 978-3540422303
[93]
Margaret A. Ellis and Bjarne Stroustrup. 1990. The C++ Annotated Reference Manual. Addison-Wesley, Reading, Massachusetts, USA. 0-201-51459-1
[94]
Hal Finkel and Richard Smith. 2016. Inline Variables. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0386R0. 30 May 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0386r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[95]
Eric Fiselier. 2019. Adding the ’constinit’ keyword. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1143R1. 21 Jan. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1143r1.md (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[96]
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1994. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, Reading, Massachussets, USA. 416 book pages. 978-0201633610
[97]
J. Daniel Garcia. 2018. Avoiding undefined behavior in contracts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1290R0. 26 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1290r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[98]
J. Daniel García, Francesco Logozzo, Gabriel Dos Reis, Manuel Fähndrich, and Shuvendu Lahiri. 2015. Simple Contracts for C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4415. 12 April 2015. http://www.open- std.org/jtc1/ sc22/wg21/docs/papers/2015/n4415.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[99]
J. Daniel Garcia and Bjarne Stroustrup. 2015. Improving performance and maintainability through refactoring in C++11. 27 Aug. 2015. https://pdfs.semanticscholar.org/1a84/826ad4968082761952b7ef0f5f6bc65f39e7.pdf (also at Internet Archive 19 Feb. 2019 20:02:29 ). Also at Research Gate: https://www.researchgate.net/publication/285576155_Improving_ performance_and_maintainability_through_refactoring_in_C11_Improving_performance_and_maintainability_ through_refactoring_in_C11
[100]
Ronald Garcia, Jaakko Järvi, Andrew Lumsdaine, Jeremy Siek, and Jeremiah Willcock. 2007. An Extended Comparative Study of Language Support for Generic Programming. Journal of Functional Programming 17, 2 (March), 145–205.
[101]
Mathias Gaunard and Dietmar Kühl. 2015. Function Object-Based Overloading of Operator Dot. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0060R0. 18 Sept. 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/ p0060r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[102]
Michael Gibbs and Bjarne Stroustrup. 2006. Fast Dynamic Casting. Software: Practice and Experience 36, 2, 139–156.
[103]
GNUmake 2006–2020. GNUmake, a tool for generating executable code from multiple source files (website). http: //www.gnu.org/software/make/ (also at Internet Archive 8 April 2020 02:17:10 ). GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program’s source files.
[104]
Matt Godbolt. 2016. Compiler Explorer, an online interactive environment for compiling C++ using a variety of compilers and seeing the assembly code they generate (blog post). 4 Sept. 2016. https://xania.org/201609/how- compiler- explorerruns- on- amazon (also at Internet Archive 1 April 2020 22:07:49 ). https://godbolt.org
[105]
Nat Goodspeed. 2014. Stackful Coroutines and Stackless Resumable Functions. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4232. 13 Oct. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4232.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[106]
Peter Gottschling. 2015. Discovering Modern C++. Addison-Wesley, Boston, Massachussets, USA. 978-0-13-438358-3
[107]
Douglas Gregor. 2006. A Brief Introduction to Variadic Templates. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2087. 10 Sept. 2006. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2006/n2087.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[108]
Doug Gregor. 2010. Deprecating Exception Specifications. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3051. 12 March 2010. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2010/n3051.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[109]
Douglas Gregor. 2012. Modules (slides). Nov. 2012. http://llvm.org/devmtg/2012- 11/Gregor- Modules.pdf (also at Internet Archive 20 Dec. 2019 10:43:30 ). Video at https://youtu.be/586c_QMXir4 Meeting proceedings at http://llvm.org/devmtg/ 2012- 11/ Presentation at 2012 LLVM Developers’ Meeting, San Jose, California, USA.
[110]
Douglas Gregor and David Abrahams. 2009. Rvalue References and Exception Safety. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2855. 23 March 2009. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2009/n2855. html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[111]
Douglas Gregor, Jaakko Järvi, and Gary Powell. 2004. Variadic Templates. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1603. 17 Feb. 2004. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2004/n1603.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[112]
Douglas Gregor, Jaakko Järvi, Jeremy Siek, Bjarne Stroustrup, Gabriel Dos Reis, and Andrew Lumsdaine. 2006. Concepts: Linguistic Support for Generic Programming in C++. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (Portland, Oregon, USA, Oct.) (OOPSLA ’06). Association for Computing Machinery, New York, NY, USA, 291–310. SIGPLAN Notices 41, 10. 1595933484 0362-1340
[113]
Douglas Gregor and Andrew Lumsdaine. 2008. Core Concepts for the C++0x Standard Library. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2502. 3 Feb. 2008. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2008/n2502.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[114]
Douglas Gregor, Bjarne Stroustrup, James Widman, and Jeremy Siek. 2008. Proposed Wording for Concepts (Revision 6). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2676. 30 June 2008. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2008/n2676.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[115]
Aleksey Gurtovoy and David Abrahams. 2002–2020. The Boost MPL Library (website).
[116]
Niklas Gustafsson. 2012. Resumable Functions. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3328. 12 Jan. 2012. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2012/n3328.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[117]
Howard Hinnant, Roger Orr, Bjarne Stroustrup, David Vandevoorde, and Michael Wong. 2019. Direction for ISO C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0939R2. 21 Jan. 2019. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2019/p0939r2.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[118]
Howard Hinnant, Roger Orr, Bjarne Stroustrup, David Vandevoorde, and Michael Wong. 2020. Direction for ISO C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P2000R0. 13 Jan. 2020. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2020/p2000r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[119]
Howard E. Hinnant, Dave Abrahams, and Peter Dimov. 2004. A Proposal to Add an Rvalue Reference to the C++ Language. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1690. 7 Sept. 2004. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2004/n1690.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[120]
Howard E. Hinnant, Walter E. Brown, Jeff Garland, and Marc Paterno. 2008. A Foundation to Sleep On: Clocks, Points in Time, and Time Durations. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2615. 18 May 2008. http: //www.open- std.org/jtc1/sc22/wg21/docs/papers/2008/n2615.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[121]
Howard E. Hinnant, Peter Dimov, and Dave Abrahams. 2002. A Proposal to Add Move Semantics Support to the C++ Language. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1377. 10 Sept. 2002. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2002/n1377.htm (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[122]
Howard E. Hinnant and Tomasz Kamiński. 2018. Extending <chrono> to Calendars and Time Zones. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0355R7. 16 March 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/ p0355r7.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[123]
Howard E. Hinnant, Bjarne Stroustrup, and Bronek Kozicki. 2006. A Brief Introduction to Rvalue References. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2027. 12 June 2006. http://www.open- std.org/jtc1/sc22/wg21/docs/ papers/2006/n2027.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[124]
Jared Hoberock (Ed.). 2019. Working Draft, C++ Extensions for Parallelism Version 2. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4796. 21 Jan. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/n4796.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[125]
Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown, and Michael Wong. 2018. Executors Design Document. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0761R2. 12 Feb. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0761r2.pdf (also at Internet Archive 21 April 2020 17:01:39 ).
[126]
David S. Hollman. 2019. Experience Report: Implementing a Coroutines TS Frontend to an Existing Tasking Library Draft Proposal. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1403R0. 16 Jan. 2019. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2019/p1403r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[127]
Tom Honermann. 2017. Remove abbreviated functions and template-introduction syntax from the Concepts TS. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0696R0. 19 June 2017. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2017/p0696r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[128]
Lee Howes, Eric Niebler, and Lewis Baker. 2018. In support of merging coroutines into C++20. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1241. 8 Oct. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1241r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[129]
Jaakko Järvi. 2002. Proposal for adding tuple types into the standard library. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1382. 10 Sept. 2002. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2002/n1382.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[130]
Jaakko Järvi, Gary Powell, and Andrew Lumsdaine. 2003a. The Lambda Library: Unnamed functions in C++. Software: Practice and Experience 33, 3, 259–291.
[131]
Jaakko Järvi, Bjarne Stroustrup, and Gabriel Dos Reis. 2007. Decltype (revision 7): proposed wording. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2343. 18 July 2007. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2007/n2343.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[132]
Jaakko Järvi, Bjarne Stroustrup, Doug Gregor, and Jeremy Siek. 2003b. Decltype and auto. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1478. 28 April 2003. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2003/n1478.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[133]
JetBrains. 2020. CLion: A cross-platform IDE for C and C++ (website). https://www.jetbrains.com/clion/ (also at Internet Archive 10 April 2020 00:41:01 ). Smart C and C++ editor: Thanks to native C and C++ support, including modern C++ standards, libc++ and Boost, CLion knows your code through and through and takes care of the routine while you focus on the important things.
[134]
Christopher Jonathan, Umar Farooq Minhas, James Hunter, Justin Levandoski, and Gor Nishanov. 2018. Exploiting Coroutines to Attack the “Killer Nanoseconds”. Proceedings of the VLDB Endowment 11, 11 (July), 1702–1714. 2150-8097
[135]
Nicolai Josuttis, Lewis Baker, Billy O’Neal, Herb Sutter, and Anthony Williams. 2019a. Stop Token and Joining Thread, Rev 9. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0660R9. 10 March 2019. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2019/p0660r9.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[136]
Nicolai Josuttis, Ville Voutilainen, Roger Orr, Daveed Vandevoorde, John Spicer, and Christopher Di Bella. 2019b. Remove Contracts from C++20. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1823R0. 18 July 2019. http: //www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1823r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[137]
Hartmut Kaiser, Maciek Brodowicz, and Thomas Sterling. 2009Sept. ParalleX: An Advanced Parallel Execution Model for Scaling-Impaired Applications. In 38th International Conference on Parallel Processing Workshops (ICPPW 2009) (Vienna, Austria). IEEE Computer Society, Los Alamitos, California, USA, 394–401. 978-0-7695-3803-7
[138]
D. Kapur, D. R. Musser, and A. A. Stepanov. 1981. Operators and Algebraic Structures. In Proceedings of the 1981 Conference on Functional Programming Languages and Computer Architecture (Portsmouth, New Hampshire, USA) (FPCA ’81). Association for Computing Machinery, New York, NY, USA, 59–64. 0897910605
[139]
Anastasia Kazakova. 2015. Infographic: C/C++ Facts We Learned Before Going Ahead with CLion (blog post). 27 July 2015. http://blog.jetbrains.com/clion/2015/07/infographics- cpp- facts- before- clion/ (also at Internet Archive 28 Jan. 2020 05:02:34 ).
[140]
Erich Keane, Adam David Alan Martin, and Allan Deutsch. 2017. A Case for Simplifying/Improving Natural Syntax Concepts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0782R0. 25 Sept. 2017. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2017/p0782r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[141]
Brian Kernighan and Dennis M. Ritchie. 1978. The C Programming Language. Prentice Hall, Englewood Cliffs, NJ, USA. 978-0131101630
[142]
Rostislav Khlebnikov and John Lakos. 2019. Contracts, Undefined Behavior, and Defensive Programming. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1743R0. 17 June 2019. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2019/p1743r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[143]
Andrew Koenig and Bjarne Stroustrup. 1989. Exception Handling for C++. In Proceedings of the USENIX “C++ at Work” Conference (Nov.). USENIX Association, Berkeley, California, USA, 31 pages. http://www.rajatorrent.com.stroustrup. com/except89.pdf (also at Internet Archive 11 April 2020 01:00:36 ).
[144]
Andrew Koenig and Bjarne Stroustrup. 1991a. Analysis of Overloaded operator.(). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N0054. 21 Sept. 1991. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/1991/WG21%201991/ X3J16_91- 0121%20WG21_N0054.pdf (also at Internet Archive 12 April 2016 17:17:26 ).
[145]
Andrew Koenig and Bjarne Stroustrup. 1991b. C++: As close to C as possible but no closer. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N0089. May 1991. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/1991/WG21% 201991/X3J16_91- 0089%20WG21_N0007.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ). Also bears the document number N0007 and the date 11 May 1989.
[146]
Andrew R. Koenig (Ed.). 1998. ISO/IEC 14882:1998: Programming languages — C++. ISO (International Organization for Standardization), Geneva, Switzerland (Sept.). 732 book pages. https://www.iso.org/standard/25845.html Status: withdrawn.
[147]
Christopher Kohlhoff. 2005. Boost ASIO (website). https://www.boost.org/doc/libs/1_67_0/doc/html/boost_asio.html (also at Internet Archive 11 April 2020 01:04:37 ). Boost.Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.
[148]
Christopher Kohlhoff. 2006. Networking Library Proposal for TR2. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2054. 8 Sept. 2006. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2006/n2054.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[149]
Christopher Kohlhoff. 2013. A Universal Model for Asynchronous Operations. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3747. 1 Sept. 2013. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2013/n3747.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[150]
Christopher M. Kohlhoff. 2018. ASIO C++ Library (website). http://think- async.com/Asio/ (also at Internet Archive 23 March 2020 15:37:13 ). Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.
[151]
Thomas Köppe. 2016a. Hexadecimal floating literals for C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0245R0. 9 Feb. 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0245r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[152]
Thomas Köppe. 2016b. Selection statements with initializer. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0305R1. 24 June 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0305r1.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[153]
Thomas Köppe. 2017a. An Adjective Syntax for Concepts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0807R0. 12 Oct. 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0807r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[154]
Thomas Köppe. 2017b. Allow lambda capture [=, this]. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0409R2. 4 March 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0409r2.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[155]
Thomas Köppe. 2017c. Range-based for statements with initializer. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0614R1. 6 Nov. 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0614r1.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[156]
Oliver Kowalke. 2015. A low-level API for stackful coroutines. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4397. 9 April 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/n4397.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[157]
Oliver Kowalke and Nat Goodspeed. 2013. A proposal to add coroutines to the C++ standard library. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3708. 4 March 2013. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2013/ n3708.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[158]
John Lakos. 2018. “Avoiding undefined behavior in contracts” [P1290R0] Explained. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1335R0. 26 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1335r0.txt (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[159]
John Lakos. 2019. United Amendment to Contracts Facility for C++20. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1486R1. 21 Feb. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1486r1.txt (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[160]
John Lakos and Alexei Zakharov. 2013. Centralized Defensive-Programming Support for Narrow Contracts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3604. 18 March 2013. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2013/n3604.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[161]
Leslie Lamport. 1978. Time, Clocks and the Ordering of Events in a Distributed System. Commun. ACM 21, 7 (July), 558–565. 0001-0782
[162]
Leslie Lamport. 1979. How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs. IEEE Trans. Comput. C-28, 9 (Sept.), 690–691. 2326-3814
[163]
Bryce Adelstein Lelbach, Olivier Giroux, JF Bastien, Detlef Vollmann, and David Olsen. 2019. The C++20 Synchronization Library. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1135R4. 4 March 2019. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2019/p1135r4.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[164]
Lockheed Martin Corporation. 2005. Joint Strike Fighter Air Vehicle C++ Coding Standards for the System Development and Demonstration Program. Lockheed Martin Corporation (Dec.). http://stroustrup.com/JSF- AV- rules.pdf (also at Internet Archive 8 Jan. 2020 08:09:03 ). Document Number 2RDU00001 Rev C.
[165]
Bruno Cardoso Lopes, Michael Spencer, and JF Bastien. 2019. Modules Feedback. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1482R0. 8 Feb. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1482r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[166]
John Maddock. 2002. A Proposal to add Regular Expressions to the Standard Library. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1386. 6 Sept. 2002. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2002/n1386.htm (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[167]
Jens Maurer. 2002. A Proposal to Add an Extensible Random Number Facility to the Standard Library. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1398. 10 Nov. 2002. http://www.open- std.org/jtc1/sc22/wg21/docs/ papers/2002/n1398.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[168]
Jens Maurer. 2012. Allowing arbitrary literal types for non-type template parameters. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3413. 19 Sept. 2012. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2012/n3413.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[169]
Jens Maurer. 2019. Bit operations. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0553R4. 1 March 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[170]
Jens Maurer and Michael Wong. 2007. Towards support for attributes in C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2236. 4 May 2007. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2007/n2236.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[171]
Ian McIntosh, Michael Wong, Raymond Mak, Robert Klarer, Jens Maurer, Alisdair Meredith, Bjarne Stroustrup, and David Vandevoorde. 2008. User-defined Literals (aka. Extensible Literals (revision 5)). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2765. 18 Sept. 2008. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[172]
Paul McJones (Ed.). 2007–2020. C++ Historical Sources Archive (website). Computer History Museum Software Preservation Group. http://www.softwarepreservation.org/projects/c_plus_plus/ (also at Internet Archive 29 March 2020 16:45:18 ). This is a collection of design documents, source code, and other materials concerning the birth, development, standardization, and use of the C++ programming language. C++ added January 2007.
[173]
Paul E. McKenney, Mark Batty, Clark Nelson, Hans Boehm, Anthony Williams, Scott Owens, Susmit Sarkar, Peter Sewell, Tjark Weber, Michael Wong, Lawrence Crowl, and Benjamin Kosnik. 2010. Omnibus Memory Model and Atomics Paper. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3196. 11 Nov. 2010. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2010/n3196.htm (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[174]
Alisdair Meredith. 2007. Seeking a Syntax for Attributes in C++09. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2224. 12 March 2007. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2007/n2224.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[175]
Alisdair Meredith. 2012. Call for Library Proposals. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3370. 26 Feb. 2012. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2012/n3370.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[176]
Alisdair Meredith and Herb Sutter. 2017. Revising atomic_shared_ptr for C++20. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0718R2. 10 Nov. 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[177]
Bertrand Meyer. 1994. Object-Oriented Software Construction. Prentice Hall, Englewood Cliffs, NJ, USA. 534 book pages. 978-0136290490
[178]
Scott Meyers. 2014. Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14. O’Reilly Media, Sebastopol, California. 978-1491903995
[179]
Microsoft. 2020. Visual Studio: Best-in-class tools for any developer (website). https://visualstudio.microsoft.com/ (also at Internet Archive 13 April 2020 16:16:48 ). Visual Studio: Full-featured IDE to code, debug, test, and deploy to any platform Visual Studio Code: Editing and debugging on any OS Visual Studio for Mac: Develop apps and games for iOS, Android, and web using .NET
[180]
Mihail Mihaylov and Vassil Vassilev. 2018. On the Coroutines TS. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1329R0. 2 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1329r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[181]
Mihail Mihaylov and Vassil Vassilev. 2019. First-class symmetric coroutines in C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1430R0. 21 Jan. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1430r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[182]
William M. Miller. 2010. Rvalue References as “Funny” Lvalues. Edison Design Group. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3030. 14 Feb. 2010. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2010/n3030.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[183]
Lev Minkovsky and John McFarlane. 2019. Math Constants. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0631R7. 24 May 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p0631r7.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[184]
Mobileye. 2020. ADAS (Advanced Driver Assistance Systems) (website). https://www.mobileye.com/our- technology/adas/ (also at Internet Archive 13 Jan. 2020 03:29:15 ). Mobileye is an Intel company.
[185]
Sergei Murzin, Michael Park, David Sankel, and Dan Sarginson. 2019. Pattern Matching. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1371R0. 21 Jan. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1371r0. pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[186]
Sergei Murzin, Michael Park, David Sankel, and Dan Sarginson. 2020. Pattern Matching. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1371R2. 13 Jan. 2020. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2020/p1371r2. pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[187]
David R. Musser and Alexander A. Stepanov. 1987. A Library of Generic Algorithms in Ada. In Proceedings of the 1987 Annual ACM SIGAda International Conference on Ada (Boston, Massachusetts, USA, Dec.) (SIGAda ’87 ). Association for Computing Machinery, New York, NY, USA, 216–225. 0897912438
[188]
Axel Naumann. 2012. Introducing cling, a C+++ Interpreter Based on clang/LLVM (video). 15 March 2012. https: //youtu.be/f9Xfh8pv3Fs Google Tech Talk (48 minutes).
[189]
Axel Naumann, Philippe Canal, Paul Russo, and Vassil Vassilev. 2010. Creating cling, an interactive interpreter interface for clang (video). 4 Nov. 2010. http://llvm.org/devmtg/2010- 11/ (also at Internet Archive 2 April 2020 04:03:23 ). Video at https://youtu.be/BjmGOMJWeAo Slides at http://llvm.org/devmtg/2010- 11/Naumann- Cling.pdf Talk at 2010 LLVM Developers’ Meeting (26 minutes).
[190]
Peter Naur. 1966. Proof of Algorithms by General Snapshots. BIT (Nordisk Tidskrift för Informationsbehandling) Numerical Mathematics 6, 4, 310–316.
[191]
Eric Niebler and Casey Carter. 2017. C++ Extensions for Ranges. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4651. 15 March 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/n4651.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[192]
Eric Niebler, Casey Carter, and Christopher Di Bella. 2018. The One Ranges Proposal (was Merging the Ranges TS). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0896R2. 25 June 2018. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2018/p0896r2.pdf (also at Internet Archive 21 April 2020 20:59:57 ).
[193]
Eric Niebler, Sean Parent, and Andrew Sutton. 2014. Ranges for the Standard Library, Revision 1. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4128. 10 Oct. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4128. html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[194]
Gor Nishanov. 2017. ISO/IEC TS 22277:2017: Technical Specification — C++ Extensions for Coroutines. ISO (International Organization for Standardization), Geneva, Switzerland (Nov.). 18 book pages. https://www.iso.org/standard/73008.html
[195]
Gor Nishanov. 2018. Incremental Approach: Coroutine TS + Core Coroutines. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1362R0. 15 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1362r0.pdf (also at Internet Archive 21 April 2020 21:01:42 ).
[196]
Gor Nishanov. 2019a. C++ Exception Optimizations. An experiment. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1676R0. 4 June 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1676r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[197]
Gor Nishanov. 2019b. Response to response to “Fibers under the magnifying glass”. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1520R0. 8 March 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1520r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[198]
NVIDIA. 2020. Advanced Driver Assistance Systems (ADAS) (website). https://www.nvidia.com/en- us/self- drivingcars/adas/ (also at Internet Archive 10 April 2020 17:56:28 ).
[199]
Günter Obiltschnig et al. 2005. POCO C++ Libraries (website). http://pocoproject.org/ (also at Internet Archive 3 March 2020 05:39:34 ). The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems. Initial release: February 21, 2005.
[200]
Objective C++ Wikipedia 2020. Objective C++ (a language variant accepted by GNU GCC and Clang). https://en.wikipedia. org/wiki/Objective- C#Objective- C++ (also at Internet Archive 9 April 2020 21:16:54 ).
[201]
OpenCV Wikipedia 2020. OpenCV (Open source Computer Vision). https://en.wikipedia.org/wiki/OpenCV (also at Internet Archive 3 April 2020 14:24:23 ).
[202]
Thorsten Ottosen. 2005. Proposal for new for-loop. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1796. 27 April 2005. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2005/n1796.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[203]
Thorsten Ottosen, Lawrence Crowl, and Douglas Gregor. 2007. Wording for range-based for-loop (revision 1). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2196. 7 March 2007. http://www.open- std.org/jtc1/sc22/wg21/docs/ papers/2007/n2196.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[204]
Peter Pirkelbauer, Yuriy Solodkyy, and Bjarne Stroustrup. 2010. Design and Evaluation of C++ Open Multi-Methods. Science of Computer Programming 75, 7 (July), 638–667. 0167-6423
[205]
Gary Powell, Doug Gregor, and Jaakko Järvi. 2004. Overloading Operator.() & Operator.*(). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1671. 10 Sept. 2004. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2004/n1671.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[206]
Georgios Psaropoulos, Thomas Legler, Norman May, and Anastasia Ailamaki. 2017. Interleaving with Coroutines: A Practical Approach for Robust Index Joins. In Proceedings of the 44th International Conference on Very Large Data Bases (Rio de Janeiro, Brazil, 31 Aug.). VLDB Endowment Inc., Los Angeles, California, 230–242. Proceedings of the VLDB Endowment 11, 2.
[207]
William Pugh. 2004. JSR 133: Java Memory Model and Thread Specification Revision (website). Sept. 2004. http: //jcp.org/en/jsr/detail?id=133 (also at Internet Archive 29 Sept. 2019 09:53:52 ). The proposed specification describes the semantics of threads, locks, volatile variables and data races. This includes what has been referred to as the Java memory model.
[208]
Qt 1991–2020. Qt, a platform for GUI and related software (website). http://www.qt.io/ (also at Internet Archive 3 April 2020 19:32:36 ). One framework. One codebase. Any platform. Everything you need for your entire software development life cycle. Qt is the fastest and smartest way to produce industry-leading software that users love.
[209]
Tahina Ramananandro, Gabriel Dos Reis, and Xavier Leroy. 2011. Formal Verification of Object Layout for C++ Multiple Inheritance. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Austin, Texas, USA) ( POPL ’11). Association for Computing Machinery, New York, NY, USA, 67–80. 978-1450304900
[210]
Tahina Ramananandro, Gabriel Dos Reis, and Xavier Leroy. 2012. A Mechanized Semantics for C++ Object Construction and Destruction, with Applications to Resource Management. In Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Philadelphia, PA, USA) (POPL ’12). Association for Computing Machinery, New York, NY, USA, 521–532. 978-1450310833
[211]
James Reinders. 2007. Intel Threading Building Blocks: Outfitting C++ For Multi-Core Processor Parallelism. O’Reilly Media, Sebastopol, California (July). 344 book pages. 978-0596514808 http://shop.oreilly.com/product/9780596514808.do Code repository at http://threadingbuildingblocks.org/
[212]
James Renwick, Tom Spink, and Björn Franke. 2019. Low-Cost Deterministic C++ Exceptions for Embedded Systems. In Proceedings of the 28th International Conference on Compiler Construction (Washington, DC, USA, Feb.) (CC 2019). Association for Computing Machinery, New York, NY, USA, 76–86. 978-1450362771
[213]
Vincent Reverdy. 2012. A proposal to add special mathematical functions according to the ISO/IEC 80000-2:2009 standard. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3494. 19 Dec. 2012. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2013/n3494.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[214]
Barry Revzin. 2017. Allow pack expansion in lambda init-capture. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0780R0. 8 Oct. 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0780r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[215]
Barry Revzin. 2018. <=> != ==. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1185R0. 7 Oct. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1185r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[216]
Barry Revzin. 2019. Spaceship needs a tune-up: Addressing some discovered issues with P0515 and P1185. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1630R1. 17 July 2019. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2019/p1630r1.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[217]
Barry Revzin and Stephan T. Lavavej. 2018. explicit(bool). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0892R2. 8 June 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[218]
Jakob Riedle. 2017. Concepts are Adjectives, not Nouns. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0791R0. 10 Oct. 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0791r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[219]
Torvald Riegel. 2015. On unifying the coroutines and resumable functions proposals. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0073R0. 25 Sept. 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/p0073r0. pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[220]
Dennis M. Ritchie. 1990. Variable-Size Arrays in C. Journal of C Language Translation 2, 2 (Sept.), 81–86. http://jclt.iecc.com/ Jct22.pdf (also at Internet Archive 2 April 2016 11:29:25 ). See also https://www.bell- labs.com/usr/dmr/www/vararray.pdf
[221]
Rene Rivera. 2019a. Are modules fast? (revision 0). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1441R0. 21 Jan. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1441r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[222]
Rene Rivera. 2019b. Are modules fast? (revision 1). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1441R1. 6 March 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1441r1.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[223]
Geoff Romer, James Dennett, and Chandler Carruth. 2018. Core Coroutines: Making coroutines simpler, faster, and more general. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1063R0. 6 May 2018. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2018/p1063r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[224]
Geoff Romer, James Dennett, and Chandler Carruth. 2019a. Core Coroutines: Making coroutines simpler, faster, and more general. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1063R2. 16 Jan. 2019. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2019/p1063r2.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[225]
Geoffrey Romer, Gor Nishanov, Lewis Baker, and Mihail Mihailov. 2019b. Coroutines: Use-cases and Trade-offs. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1493R0. 19 Feb. 2019. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2019/p1493r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[226]
Hyman Rosen, John Lakos, and Alisdair Meredith. 2019. Adding a global contract assumption mode. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1730R0. 14 June 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/ p1730r0.md (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[227]
David Sankel (Ed.). 2018. Working Draft, C++ Extensions for Reflection. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4766. 11 Aug. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/n4766.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[228]
David Sankel and Daveed Vandevoorde. 2019. User-friendly and Evolution-friendly Reflection: A Compromise Document. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1733R0. 15 June 2019. http://www.open- std.org/jtc1/sc22/ wg21/docs/papers/2019/p1733r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[229]
Tim Shen, Richard Smith, Zhihao Yuan, and Chandler Carruth. 2016. Designated Initialization. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0329R0. 9 May 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/ p0329r0.pdf (also at Internet Archive 21 April 2020 21:37:11 ).
[230]
Nathan Sidwell. 2018. Module Preamble is Unnecessarily Fragile (re N4720 Merging Modules). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1299R3. 13 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/ p1299r3.pdf (also at Internet Archive 21 April 2020 21:39:18 ).
[231]
Nathan Sidwell. 2019. Make Me A Module (re P1184 A Module Mapper). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1602R0. 1 March 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1602r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[232]
Nathan Sidwell and Davis Herring. 2019. Modules: ADL & Internal Linkage (re P1103R1 Merging Modules). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1347R1. 17 Jan. 2019. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2019/p1347r1.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[233]
Jeremy Siek and Andrew Lumsdaine. 2000–2007. The Boost Concept Check Library (BCCL) (website). https://www.boost. org/doc/libs/1_69_0/libs/concept_check/concept_check.htm (also at Internet Archive 16 Feb. 2019 12:45:11 ). The Concept Check library allows one to add explicit statement and checking of concepts in the style of the proposed C++ language extension. The mechanisms use standard C++ and introduce no run-time overhead. The main cost of using the mechanism is in compile-time.
[234]
Jeremy Siek and Walid Taha. 2006. A Semantic Analysis of C++ Templates. In Proceedings of the 20th European Conference on Object-Oriented Programming (ECOOP) (Nantes, France). Springer-Verlag, Berlin and Heidelberg, Germany, 304–327. 3540357262
[235]
Cleiton Santoia Silva and Daniel Auresco. 2014. C++ type reflection via variadic template expansion. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3951. 7 Feb. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n3951. pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[236]
Richard Smith. 2013. Relaxing constraints on constexpr functions. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3597. 15 March 2013. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2013/n3597.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[237]
Richard Smith. 2015. Guaranteed copy elision through simplified value categories. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0135R0. 27 Sept. 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[238]
Richard Smith (Ed.). 2017. ISO/IEC 14882:2017: Programming languages — C++. ISO (International Organization for Standardization), Geneva, Switzerland (Dec.). 1605 book pages. https://www.iso.org/standard/68564.html
[239]
Richard Smith. 2018a. Another take on Modules. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0947R0. 12 Feb. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0947r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[240]
Richard Smith. 2018b. Another take on Modules (Revision 1). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0947R1. 6 March 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0947r1.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[241]
Richard Smith. 2018c. Towards consistency between <=> and other comparison operators. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0946R0. 10 Feb. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0946r0. html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[242]
Richard Smith. 2019. Merging Modules. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1103R3. 22 Feb. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1103r3.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[243]
Richard Smith (Ed.). 2020. Working Draft, Standard for Programming Language C++. Number N4861. (April). 1834 book pages. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2020/n4861.pdf (also at Internet Archive 27 April 2020 14:58:44 ).
[244]
Richard Smith and Gabriel Dos Reis. 2018. Merging Modules. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1103R0. 22 June 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1103r0.pdf (also at Internet Archive 21 April 2020 22:21:27 ).
[245]
Richard Smith and Gor Nishanov. 2018. Halo: coroutine Heap Allocation eLision Optimization: The joint response. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0981R0. 18 March 2018. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2018/p0981r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[246]
Richard Smith and Andrew Sutton. 2017. Semantic constraint matching for concepts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0717R0. 19 June 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0717r0. pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[247]
Richard Smith, Andrew Sutton, and Daveed Vandevoorde. 2018a. Immediate functions. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1073R3. 6 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1073r3. html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[248]
Richard Smith, Andrew Sutton, and Daveed Vandevoorde. 2018b. std::is_constant_evaluated(). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0595R2. 9 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2018/p0595r2.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[249]
Richard Smith, Daveed Vandevoorde, Geoffrey Romer, Gor Nishanov, Nathan Sidwell, Iain Sandoe, and Lewis Baker. 2019. Coroutines: Language and Implementation Impact. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1492R0. 19 Feb. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1492r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[250]
Oleg Smolsky. 2014. Defaulted comparison operators. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3950. 19 Feb. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n3950.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[251]
Jeff Snyder and Chandler Carruth. 2013. Call for Compile-Time Reflection Proposals. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3814. 6 Oct. 2013. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2013/n3814.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[252]
Yuriy Solodkyy, Gabriel Dos Reis, and Bjarne Stroustrup. 2013. Open Pattern Matching for C++. In Proceedings of the 2013 Companion Publication for Conference on Systems, Programming, & Applications: Software for Humanity (Indianapolis, Indiana, USA, Oct.) ( SPLASH ’13). Association for Computing Machinery, New York, NY, USA, 97–98. 978-1450319959
[253]
Yuriy Solodkyy, Gabriel Dos Reisl, and Bjarne Stroustrup. 2012. Open and Efficient Type Switch for C++. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (Tucson, Arizona, USA, Oct.) ( OOPSLA ’12). Association for Computing Machinery, New York, NY, USA, 963–982. SIGPLAN Notices 47, 10 (Nov. 2012). 978-1450315616
[254]
Yuriy Solodkyy, Gabriel Dos Reisl, and Bjarne Stroustrup. 2014. Pattern Matching for C++. Nov. 2014. http://wiki. edg.com/pub/Wg21urbana- champaign/EveningSessions/pattern_matching.pdf Evening session at WG21 meeting in Urbana-Champaign, Illinois.
[255]
Mike Spertus. 2018. Extensions to Class Template Argument Deduction. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1021R0. 7 May 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1021r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[256]
Mike Spertus, Timur Doumler, and Richard Smith. 2018. Filling holes in Class Template Argument Deduction. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1021R3. 26 Nov. 2018. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2019/p1021r3.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[257]
Mike Spertus and Richard Smith. 2015. Template parameter deduction for constructors (Rev. 3). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0091R0. 24 Sept. 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/ p0091r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[258]
Alexander Stepanov. 1986. Scheme higher order programming library (code repository plus documentation). Aug. 1986. http://stepanovpapers.com/schemenotes/index.html (also at Internet Archive 16 Aug. 2018 07:27:46 ).
[259]
Alex Stepanov and Paul McJones. 2009. Elements of Programming. Addison-Wesley, Reading, Massachusetts, USA. 288 pages. 978-0321635372
[260]
Arthur G. Stephenson et al. 1999. Mars Climate Orbiter Mishap Investigation Board Phase I Report. Technical Report. NASA (10 Nov.). https://llis.nasa.gov/llis_lib/pdf/1009464main1_0641- mr.pdf (also at Internet Archive 5 March 2020 02:00:59 ).
[261]
Bjarne Stroustrup. 1982. Classes: An Abstract Data Type Facility for the C Language. SIGPLAN Notices 17, 1 (Jan.), 42–51. 0362-1340
[262]
Bjarne Stroustrup. 1985a. AT&T C++ Translator Release Notes. Nov. 1985. Archived at the Computer History Museum: http://www.softwarepreservation.org/projects/c_plus_plus/ (also at Internet Archive 29 March 2020 16:45:18 ). Contains the manual and tutorials (e.g., for stream I/O and tasks).
[263]
Bjarne Stroustrup. 1985b. The C++ Programming Language. Addison-Wesley, Reading, Massachusetts, USA. 0-201-12078-X
[264]
Bjarne Stroustrup. 1985c. A Set of C++ Classes for Co-routine Style Programming. In C++ Translator Release Notes. AT&T, New York, NY, USA (Nov.). http://www.softwarepreservation.org/projects/c_plus_plus/cfront/release_e/doc/ ClassesForCoroutines.pdf (also at Internet Archive 18 July 2019 02:33:30 ). First published internally in 1980.
[265]
Bjarne Stroustrup. 1991. The C++ Programming Language (2th Edition). Addison-Wesley, Reading, Massachusetts, USA. 0-201-53992-6
[266]
Bjarne Stroustrup. 1993. A History of C++. In The Second ACM SIGPLAN Conference on History of Programming Languages (Cambridge, Massachusetts, USA, March) ( HOPL-II ). Association for Computing Machinery, New York, NY, USA, 271–297. 0897915704
[267]
Bjarne Stroustrup. 1994. The Design and Evolution of C++. Addison-Wesley, Reading, Massachusetts, USA. 0-201-54330-3
[268]
Bjarne Stroustrup. 1997. The C++ Programming Language (3rd Edition). Addison-Wesley, Reading, Massachusetts, USA. 0-201-88954-4
[269]
Bjarne Stroustrup. 1998. Generalizing Overloading for C++2000. Overload Journal 25 (1 April), 20–24. 1354-3172 https: //accu.org/var/uploads/journals/overload25.pdf (also at Internet Archive 13 May 2011 09:37:09 ).
[270]
Bjarne Stroustrup. 2003. Concept checking — A more abstract complement to type checking. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1510. 22 Oct. 2003. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2003/n1510.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[271]
Bjarne Stroustrup. 2004–2020. Why can’t I define constraints for my template parameters? (website). http://www.stroustrup. com/bs_faq2.html#constraints (also at Internet Archive 10 April 2020 05:20:05 ).
[272]
Bjarne Stroustrup. 2005. A rationale for semantically enhanced library languages. In Proceedings of the Workshop on LibraryCentric Software Design (LCSD’05), co-located with OOPSLA 2005 (San Diego, California, USA, 16 Oct.). Department of Computer Science & Engineering, Texas A&M University, College Station, Texas, USA, 44. Archived at https: //web.archive.org/web/20051118062506/http://lcsd05.cs.tamu.edu/papers/stroustrup.pdf
[273]
Bjarne Stroustrup. 2007. Evolving a Language in and for the Real World: C++ 1991–2006. In Proceedings of the Third ACM SIGPLAN Conference on History of Programming Languages (San Diego, California, June) (HOPL III ). Association for Computing Machinery, New York, NY, USA, 4–1–4–59. 978-1595937667
[274]
Bjarne Stroustrup. 2008a. Programming – Principles and Practice Using C++. Addison-Wesley, Boston, Massachusetts, USA. 978-0321543721 There is also a second edition, ISBN 978-0321992789, 2014.
[275]
Bjarne Stroustrup. 2008b. Uniform initialization design choices (Revision 2). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2532. 2 Feb. 2008. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2008/n2532.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[276]
Bjarne Stroustrup. 2009a. The C++0x “Remove Concepts” Decision. Dr. Dobb’s Journal (July). https://www.drdobbs.com/ cpp/the- c0x- remove- concepts- decision/218600111 (also at Internet Archive 9 Oct. 2012 01:02:52 ).
[277]
Bjarne Stroustrup. 2009b. The C++0x “Remove Concepts” Decision. Overload Journal 92 (Aug.). https://accu.org/index.php/ journals/1576 (also at Internet Archive 4 March 2010 22:57:32 ). Reprinted with permission from Dr. Dobb’s Journal.
[278]
Bjarne Stroustrup. 2009c. Simplifying the use of concepts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2906. 21 June 2009. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2009/n2906.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[279]
Bjarne Stroustrup. 2010a. “New” Value Terminology. April 2010. http://stroustrup.com/terminology.pdf (also at Internet Archive 2 Oct. 2012 20:01:36 ).
[280]
Bjarne Stroustrup. 2010b. What Should We Teach New Software Developers? Why? Communications of the ACM 53, 1 (Jan.), 40–42. 0001-0782
[281]
Bjarne Stroustrup. 2012. Software Development for Infrastructure. Computer 45, 1 (Jan.), 47–58. 0018-9162
[282]
Bjarne Stroustrup. 2013. The C++ Programming Language (4th Edition). Addison-Wesley, Boston, Massachusetts, USA. 978-0321563842
[283]
Bjarne Stroustrup. 2014a. Call syntax: x.f(y) vs. f(x,y). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4174. 11 Oct. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4174.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[284]
Bjarne Stroustrup. 2014b. Default comparisons. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4175. 11 Oct. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4175.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[285]
Bjarne Stroustrup. 2014c. Thoughts about Comparisons. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4176. 11 Oct. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4176.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[286]
Bjarne Stroustrup. 2014d. A Tour of C++. Addison-Wesley, Boston, Massachusetts, USA. 978-0321958310
[287]
Bjarne Stroustrup. 2015a. Thoughts about C++17. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4492. 15 May 2015. http://open- std.org/jtc1/sc22/wg21/docs/papers/2015/n4492.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[288]
Bjarne Stroustrup. 2015b. Unified call syntax concerns. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0131R0. 27 Sept. 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/p0131r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[289]
Bjarne Stroustrup. 2017a. Concepts: The Future of Generic Programming; or, How to Design Good Concepts and Use Them Well. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0557R1. 31 Jan. 2017. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2017/p0557r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[290]
Bjarne Stroustrup. 2017b. Function declarations using concepts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0694R0. 18 June 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0694r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[291]
Bjarne Stroustrup. 2017c. Learning and Teaching Modern C++ (video). 25 Sept. 2017. https://youtu.be/fX2W3nNjJIo Opening keynote for CppCon (the C++ Conference), Bellevue, Washington, USA (99 minutes).
[292]
Bjarne Stroustrup. 2018a. The Evils of Paradigms; or, Beware of one-solution-fits-all thinking. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0976R0. 6 March 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/ p0976r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[293]
Bjarne Stroustrup. 2018b. A minimal solution to the concepts syntax problems. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1079. 6 May 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1079r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[294]
Bjarne Stroustrup. 2018c. Modules and macros. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0955R0. 11 Feb. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0955r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[295]
Bjarne Stroustrup. 2018d. Remember the Vasa! ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0977R0. 6 March 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0977r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[296]
Bjarne Stroustrup. 2018e. Subscripts and sizes should be signed. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1428R0. 18 Jan. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1428r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[297]
Bjarne Stroustrup. 2018f. A Tour of C++ (Second Edition). Addison-Wesley, Boston, Massachusetts, USA. 978-0134997834
[298]
Bjarne Stroustrup. 2018g. What do we want to do with reflection? ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0954R0. 11 Feb. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0954r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[299]
Bjarne Stroustrup. 2019a. C++ exceptions and alternatives. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1947R0. 18 Nov. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1947r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[300]
Bjarne Stroustrup. 2019b. How can you be so certain? ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1962R0. 18 Nov. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1962r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[301]
Bjarne Stroustrup. 2019c. What to do about contracts? ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1711R0. 13 June 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1711r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[302]
Bjarne Stroustrup et al. 1992. How to Write a C++ Language Extension Proposal for ANSI-X3J16/ISO-WG21. SIGPLAN Notices 27, 6 (June), 64–71. 0362-1340
[303]
Bjarne Stroustrup and Gabriel Dos Reis. 2003a. Concepts — Design choices for template argument checking. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1522. 22 Oct. 2003. http://www.open- std.org/jtc1/sc22/wg21/docs/ papers/2003/n1522.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[304]
Bjarne Stroustrup and Gabriel Dos Reis. 2003b. Concepts – Syntax and composition. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1536. 22 Oct. 2003. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2003/n1536.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[305]
Bjarne Stroustrup and Gabriel Dos Reis. 2003c. Templates aliases for C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1489. 16 Sept. 2003. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2003/n1489.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[306]
Bjarne Stroustrup and Gabriel Dos Reis. 2005a. A concept design (Rev. 1). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1782. April 2005. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2005/n1782.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[307]
Bjarne Stroustrup and Gabriel Dos Reis. 2005b. Initialization and initializers. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1890. 22 Sept. 2005. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[308]
Bjarne Stroustrup and Gabriel Dos Reis. 2014. Operator Dot. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4173. 11 Oct. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4173.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[309]
Bjarne Stroustrup and Gabriel Dos Reis. 2016. Operator Dot (R3). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0416R1. 16 Oct. 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0416r1.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[310]
Bjarne Stroustrup and Herb Sutter (Eds.). 2014–2020. C++ Core Guidelines (online document repository). http://github. com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md (also at Internet Archive 24 Feb. 2020 12:59:15 ). Continually updated.
[311]
Bjarne Stroustrup and Herb Sutter. 2015. Unified Call Syntax: x.f(y) and f(x,y). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4474. 12 April 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/n4474.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[312]
Bjarne Stroustrup, Herb Sutter, and Gabriel Dos Reis. 2015. A brief introduction to C++’s model for type- and resource-safety. Isocpp.org. Oct. 2015. http://www.stroustrup.com/resource- model.pdf (also at Internet Archive 10 April 2020 05:20:23 ). Revised Dec. 2015.
[313]
Bjarne Stroustrup and Andrew Sutton (Eds.). 2012. A Concept Design for the STL. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3351. 13 Jan. 2012. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2012/n3351.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[314]
Herb Sutter. 2002. Proposed Addition to C++: Typedef Templates. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1406. 21 Oct. 2002. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2002/n1406.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[315]
Herb Sutter. 2012. async and ~future. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3451. 23 Sept. 2012. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2012/n3451.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[316]
Herb Sutter. 2013a. ~thread Should Join. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3636. 17 April 2013. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2013/n3636.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[317]
Herb Sutter. 2013b. AAA Style (Almost Always Auto) (blog post). 12 Aug. 2013. http://herbsutter.com/2013/08/12/gotw- 94-solution- aaa- style- almost- always- auto/ (also at Internet Archive 3 Dec. 2019 14:58:42 ).
[318]
Herb Sutter. 2014. Unified Call Syntax. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4165. 4 Oct. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4165.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[319]
Herb Sutter. 2017a. Consistent comparison. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0515R0. 5 Feb. 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0515r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[320]
Herb Sutter. 2017b. Merge Concurrency TS atomic pointers into C++20 working draft. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0673R0. 16 June 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0673r0. pdf (also at Internet Archive 22 April 2020 02:23:22 ).
[321]
Herb Sutter. 2018a. Concepts in-place syntax. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0745R0. 11 Feb. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0745r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[322]
Herb Sutter. 2018b. Zero-overhead deterministic exceptions: Throwing values. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0709R0. 2 May 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0709r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[323]
Herb Sutter. 2019. Lifetime safety: Preventing common dangling — version 1.1. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1179R1. 22 Nov. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1179r1.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[324]
Herb Sutter, Casey Carter, Gabriel Dos Reis, Eric Niebler, Bjarne Stroustrup, Andrew Sutton, and Ville Voutilainen. 2019. Rename concepts to standard_case for C++20, while we still can. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1754R0. 16 June 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1754r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[325]
Herb Sutter and Bjarne Stroustrup. 2003. A name for the null pointer: nullptr. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1488. 10 Sept. 2003. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2003/n1488.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[326]
Herb Sutter, Bjarne Stroustrup, and Gabriel Dos Reis. 2015. Structured bindings. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0144R0. 14 Oct. 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[327]
Andrew Sutton. 2017. Working Draft, C++ extensions for Concepts. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4674. 19 June 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/n4674.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[328]
Andrew Sutton, Sam Goodrick, and Daveed Vandevoorde. 2019. Expansion statements. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1306R1. 21 Jan. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1306r1. pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[329]
Andrew Sutton and Richard Smith. 2014. Folding expressions. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4295. 7 Nov. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4295.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[330]
Andrew Sutton and Bjarne Stroustrup. 2011. Design of Concept Libraries for C++. In Software Language Engineering: 4th International Conference (SLE 2011) (3 July 2011–). Springer, Berlin and Heidelberg, Germany, 97–118. 978-3-642-28829-6
[331]
Andrew Sutton and Herb Sutter. 2018. Value-based Reflection. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0993R0. 2 April 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0993r0.pdf (also at Internet Archive 22 April 2020 02:28:24 ).
[332]
Andrew Sutton, Faisal Vali, and Daveed Vandevoorde. 2018. Scalable Reflection in C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1240R0. 8 Oct. 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p1240r0. pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[333]
Clang Team. 2014. Clang 3.5 Documentation: Modules. http://clang.llvm.org/docs/Modules.html (also at Internet Archive 5 Dec. 2014 14:06:59 ).
[334]
Andrew Tomazos. 2015. Proposal of [[unused]], [[nodiscard]] and [[fallthrough]] attributes. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0068R0. 3 Sept. 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/p0068r0. pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[335]
Andrew Tomazos and Michael Spertus. 2014. Defaulted Comparison Using Reflection. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4239. 12 Oct. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4239.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[336]
Hubert Tong and Faisal Vali. 2016. Smart References through Delegation: An Alternative to N4477’s Operator Dot. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0352R0. 30 May 2016. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2016/p0352r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[337]
James Touton and Mike Spertus. 2015. Template Argument Type Deduction. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4469. 10 April 2015. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2015/n4469.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[338]
James Touton and Mike Spertus. 2016. Declaring non-type template arguments with auto. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0127R1. 4 March 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0127r1. html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[339]
Clay Trychta. 2016. Attributes for Likely and Unlikely Branches. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0479R0. 16 Oct. 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0479r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[340]
TSO Wikipedia 2020. Memory ordering. https://wikipedia.org/wiki/Memory_ordering Archived at https://web.archive. org/web/20200301003203/https://en.wikipedia.org/wiki/Memory_ordering
[341]
Faisal Vali, Herb Sutter, and Dave Abrahams. 2012. Proposal for Generic (Polymorphic) Lambda Expressions. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3418. 21 Sept. 2012. http://www.open- std.org/jtc1/sc22/wg21/docs/ papers/2012/n3418.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[342]
Jan Christiaan van Winkel, Jose Daniel Garcia, Ville Voutilainen, Roger Orr, Michael Wong, and Sylvain Bonnal. 2017. Operating principles for evolving C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0559R0. 31 Jan. 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0559r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[343]
Daveed Vandevoorde. 2007. Modules in C++ (Revision 5). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2316. 19 June 2007. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2007/n2316.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[344]
Daveed Vandevoorde. 2009. New wording for C++0x Lambdas (rev. 2). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2927. 15 July 2009. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[345]
Daveed Vandevoorde. 2012. Modules in C++ (Revision 6). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3347. 11 Jan. 2012. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2012/n3347.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[346]
Daveed Vandevoorde. 2017. Down with typename! ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0634. 5 March 2017. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2017/p0634r0.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[347]
David Vandevoorde and Nicolai M. Josuttis. 2002. C++ Templates: The Complete Guide. Addison-Wesley, Reading, Massachussets, USA. 978-0201734843
[348]
David Vandevoorde, Nicolai M. Josuttis, and Douglas Gregor. 2018. C++ Templates — The Complete Guide (Second Edition). Addison-Wesley, Boston, Massachussets, USA. 978-0-321-71412-1
[349]
Todd L. Veldhuizen. 2003. C++ Templates are Turing Complete. Indiana University Computer Science. Archived at http://web.archive.org/web/20040919170502/http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf Also at http://rtraba.files. wordpress.com/2015/05/cppturing.pdf
[350]
Ville Voutilainen. 2016a. Discussion about std::thread and RAII. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0206R0. 27 Jan. 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0206r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[351]
Ville Voutilainen. 2016b. Presentation at WG21 meeting in Jacksonville, Florida. Feb. 2016.
[352]
Ville Voutilainen. 2016c. Why I want Concepts, and why I want them sooner rather than later. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0225R0. 5 Feb. 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/ p0225r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[353]
Ville Voutilainen. 2019a. Adding a global contract assumption mode. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1710R0. 17 June 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p1710r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[354]
Ville Voutilainen. 2019b. To boldly suggest an overall plan for C++23. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0592R4. 25 Nov. 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p0592r4.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[355]
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. 2018. Yet another approach for constrained declarations. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1141R0. 23 June 2018. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2018/p1141r0.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[356]
Ville Voutilainen and Daveed Vandevoorde. 2016. constexpr if. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0128R1. 10 Feb. 2016. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2016/p0128r1.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[357]
Ville Voutilainen and Jonathan Wakely. 2018. Integrating feature-test macros into the C++ WD (rev. 2). ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0941R2. 8 June 2018. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2018/p0941r2.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[358]
VStudio Wikipedia 2020. Microsoft Visual Studio. https://en.wikipedia.org/wiki/Microsoft_Visual_Studio (also at Internet Archive 10 April 2020 22:12:27 ).
[359]
Philip Wadler and Stephen Blott. 1989. How to Make Ad-Hoc Polymorphism Less Ad Hoc. In Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Austin, Texas, USA, Jan.) (POPL ’89). Association for Computing Machinery, New York, NY, USA, 60–76. 0897912942
[360]
Jonathan Wakely. 2018. Working Draft, C++ Extensions for Networking. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N4734. 4 April 2018. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/n4734.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[361]
Wandbox 2016–2020. Wandbox, a Japanese online environment for compiling and running C++ using a variety of compilers (website). https://wandbox.org/ (also at Internet Archive 2 Jan. 2020 21:23:50 ).
[362]
Daniel Wasserrab, Tobias Nipkow, Gregor Snelting, and Frank Tip. 2006. An Operational Semantics and Type Safety Proof for Multiple Inheritance in C++. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (Portland, Oregon, USA, Oct.) (OOPSLA ’06). Association for Computing Machinery, New York, NY, USA, 345–362. 1595933484
[363]
WebAssembly 2017–2020. WebAssembly (Wasm), a portable binary code format primarily for executing in browsers (website). https://webassembly.org/ (also at Internet Archive 1 April 2020 05:02:38 ). WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications.
[364]
WG14. 2007. Thread Cancellation. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N2455. 11 Oct. 2007. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2007/n2455.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[365]
WG21. 1989–2020. C++ Standards Committee Papers (website). http://open- std.org/jtc1/sc22/wg21/docs/papers/ (also at Internet Archive 4 Sept. 2019 02:05:46 ). Links to all official papers for ISO/IEC JTC1/SC2/WG21.
[366]
Jeremiah Willcock, Jaakko Järvi, Doug Gregor, Bjarne Stroustrup, and Andrew Lumsdaine. 2006. Lambda expressions and closures for C++. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N1968. 26 Feb. 2006. http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2006/n1968.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[367]
Anthony Williams. 2012. C++ Concurrency in Action – Practical Multithreading. Manning Publishing, Shelter Island, NY, USA. 978-1933988771
[368]
Anthony Williams. 2018. C++ Concurrency in Action – Practical Multithreading (2nd edition). Manning Publishing, Shelter Island, NY, USA. 978-1617294693
[369]
Jing Yang, Gogul Balakrishnan, Naoto Maeda, Franjo Ivančić, Aarti Gupta, Nishant Sinha, Sriram Sankaranarayanan, and Naveen Sharma. 2012. Object Model Construction for Inheritance in C++ and Its Applications to Program Analysis. In Compiler Construction: 21st International Conference (CC 2012) (Tallinn, Estonia), Michael O’Boyle (Ed.). Springer, Berlin and Heidelberg, Germany, 144–164. 978-3-642-28651-3
[370]
Jeffrey Yasskin. 2014. String_view: a non-owning reference to a string, revision 7. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper N3921. 14 Feb. 2014. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n3921.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[371]
Mani Zandifar, Nathan Thomas, Nancy M. Amato, and Lawrence Rauchwerger. 2014. The STAPL Skeleton Framework. In The 27th International Workshop on Languages and Compilers for Parallel Computing (LCPC 2014) (Hillsboro, Oregon, USA, 17 Sept.), James Brodman and Peng Tu (Eds.). Springer International Publishing, Cham, Switzerland, 176–190. 978-3-319-17472-3
[372]
Victor Zverovich. 2019. Text Formatting. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P0645R9. 16 June 2019. http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r9.html (also at Internet Archive 4 Sept. 2019 02:05:46 ).
[373]
Victor Zverovich, Daniela Engert, and Howard E. Hinnant. 2019. Integration of chrono with text formatting. ISO/IEC JTC1/SC2/WG21: C++ Standards Committee paper P1361R1. 14 June 2019. http://www.open- std.org/jtc1/sc22/wg21/ docs/papers/2019/p1361r1.pdf (also at Internet Archive 4 Sept. 2019 02:05:46 ).

Cited By

View all
  • (2023)Evolving a Programming CS2 Course: A Decade-Long Experience ReportProceedings of the 54th ACM Technical Symposium on Computer Science Education V. 110.1145/3545945.3569831(507-513)Online publication date: 2-Mar-2023
  • (2023)Detecting C++ Compiler Front-End Bugs via Grammar Mutation and Differential TestingIEEE Transactions on Reliability10.1109/TR.2022.317122072:1(343-357)Online publication date: Mar-2023
  • (2023)Embracing modern C++ features: An empirical assessment on the KDE communityJournal of Software: Evolution and Process10.1002/smr.2605Online publication date: 2-Aug-2023
  • Show More Cited By

Index Terms

  1. Thriving in a crowded and changing world: C++ 2006–2020

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Proceedings of the ACM on Programming Languages
    Proceedings of the ACM on Programming Languages  Volume 4, Issue HOPL
    June 2020
    1524 pages
    EISSN:2475-1421
    DOI:10.1145/3406494
    Issue’s Table of Contents
    This work is licensed under a Creative Commons Attribution-NoDerivatives International 4.0 License.

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 12 June 2020
    Published in PACMPL Volume 4, Issue HOPL

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. C++
    2. concurrency and parallelism
    3. generic programming
    4. programming language design and evolution
    5. resource management
    6. simplification of language use
    7. standardization

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)3,802
    • Downloads (Last 6 weeks)379
    Reflects downloads up to 13 Jan 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Evolving a Programming CS2 Course: A Decade-Long Experience ReportProceedings of the 54th ACM Technical Symposium on Computer Science Education V. 110.1145/3545945.3569831(507-513)Online publication date: 2-Mar-2023
    • (2023)Detecting C++ Compiler Front-End Bugs via Grammar Mutation and Differential TestingIEEE Transactions on Reliability10.1109/TR.2022.317122072:1(343-357)Online publication date: Mar-2023
    • (2023)Embracing modern C++ features: An empirical assessment on the KDE communityJournal of Software: Evolution and Process10.1002/smr.2605Online publication date: 2-Aug-2023
    • (2022)Detecting Compiler Bugs Via a Deep Learning-Based FrameworkInternational Journal of Software Engineering and Knowledge Engineering10.1142/S021819402250020632:05(661-691)Online publication date: 20-May-2022
    • (2022)Save the Earth, Program in C++!2022 IEEE 16th International Scientific Conference on Informatics (Informatics)10.1109/Informatics57926.2022.10083490(11-12)Online publication date: 23-Nov-2022

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Login options

    Full Access

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media