skip to main content
research-article
Open Access

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

Published:12 June 2020Publication History
Skip Abstract Section

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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarCross RefCross Ref
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  37. Clion Wikipedia 2020. JetBrains (formerly IntelliJ Software). https://en.wikipedia.org/wiki/JetBrains (also at Internet Archive 10 April 2020 22:12:43 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  41. Melvin E. Conway. 1963. Design of a Separable Transition-Diagram Compiler. Commun. ACM 6, 7 (July), 396–408. 0001-0782 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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-1617293818Google ScholarGoogle Scholar
  52. Krysztof Czarnecki and Ulrich Eisenecker. 2000. Generative Programming: Methods, Tools, and Applications. Addison-Wesley Professional, Reading, Massachussets, USA. 864 book pages. 978-0201309775Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Jeffrey Dean and Sanjay Ghemawat. 2008. MapReduce: Simplified Data Processing on Large Clusters. Commun. ACM 51, 1 (Jan.), 107–113. 0001-0782 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 Google ScholarGoogle ScholarCross RefCross Ref
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  77. Gabriel Dos Reis, Nathan Sidwell, Richard Smith, and David Vandevoorde. 2019. Modules are ready. 14 Feb. 2019. Note on the WG21 mailing list.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 Google ScholarGoogle ScholarCross RefCross Ref
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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-3540422303Google ScholarGoogle Scholar
  93. Margaret A. Ellis and Bjarne Stroustrup. 1990. The C++ Annotated Reference Manual. Addison-Wesley, Reading, Massachusetts, USA. 0-201-51459-1Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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-0201633610Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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_C11Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  102. Michael Gibbs and Bjarne Stroustrup. 2006. Fast Dynamic Casting. Software: Practice and Experience 36, 2, 139–156. Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle Scholar
  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.orgGoogle ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  106. Peter Gottschling. 2015. Discovering Modern C++. Addison-Wesley, Boston, Massachussets, USA. 978-0-13-438358-3Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  115. Aleksey Gurtovoy and David Abrahams. 2002–2020. The Boost MPL Library (website).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  141. Brian Kernighan and Dennis M. Ritchie. 1978. The C Programming Language. Prentice Hall, Englewood Cliffs, NJ, USA. 978-0131101630Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  161. Leslie Lamport. 1978. Time, Clocks and the Ordering of Events in a Distributed System. Commun. ACM 21, 7 (July), 558–565. 0001-0782 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  177. Bertrand Meyer. 1994. Object-Oriented Software Construction. Prentice Hall, Englewood Cliffs, NJ, USA. 534 book pages. 978-0136290490Google ScholarGoogle ScholarDigital LibraryDigital Library
  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-1491903995Google ScholarGoogle Scholar
  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 .NETGoogle ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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).Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  190. Peter Naur. 1966. Proof of Algorithms by General Snapshots. BIT (Nordisk Tidskrift för Informationsbehandling) Numerical Mathematics 6, 4, 310–316. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.htmlGoogle ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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/Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.pdfGoogle ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.htmlGoogle ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  259. Alex Stepanov and Paul McJones. 2009. Elements of Programming. Addison-Wesley, Reading, Massachusetts, USA. 288 pages. 978-0321635372Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  261. Bjarne Stroustrup. 1982. Classes: An Abstract Data Type Facility for the C Language. SIGPLAN Notices 17, 1 (Jan.), 42–51. 0362-1340 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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).Google ScholarGoogle Scholar
  263. Bjarne Stroustrup. 1985b. The C++ Programming Language. Addison-Wesley, Reading, Massachusetts, USA. 0-201-12078-XGoogle ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  265. Bjarne Stroustrup. 1991. The C++ Programming Language (2th Edition). Addison-Wesley, Reading, Massachusetts, USA. 0-201-53992-6Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  267. Bjarne Stroustrup. 1994. The Design and Evolution of C++. Addison-Wesley, Reading, Massachusetts, USA. 0-201-54330-3Google ScholarGoogle Scholar
  268. Bjarne Stroustrup. 1997. The C++ Programming Language (3rd Edition). Addison-Wesley, Reading, Massachusetts, USA. 0-201-88954-4Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.pdfGoogle ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  279. Bjarne Stroustrup. 2010a. “New” Value Terminology. April 2010. http://stroustrup.com/terminology.pdf (also at Internet Archive 2 Oct. 2012 20:01:36 ).Google ScholarGoogle Scholar
  280. Bjarne Stroustrup. 2010b. What Should We Teach New Software Developers? Why? Communications of the ACM 53, 1 (Jan.), 40–42. 0001-0782 Google ScholarGoogle ScholarDigital LibraryDigital Library
  281. Bjarne Stroustrup. 2012. Software Development for Infrastructure. Computer 45, 1 (Jan.), 47–58. 0018-9162 Google ScholarGoogle ScholarDigital LibraryDigital Library
  282. Bjarne Stroustrup. 2013. The C++ Programming Language (4th Edition). Addison-Wesley, Boston, Massachusetts, USA. 978-0321563842Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  286. Bjarne Stroustrup. 2014d. A Tour of C++. Addison-Wesley, Boston, Massachusetts, USA. 978-0321958310Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  297. Bjarne Stroustrup. 2018f. A Tour of C++ (Second Edition). Addison-Wesley, Boston, Massachusetts, USA. 978-0134997834Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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_orderingGoogle ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  347. David Vandevoorde and Nicolai M. Josuttis. 2002. C++ Templates: The Complete Guide. Addison-Wesley, Reading, Massachussets, USA. 978-0201734843Google ScholarGoogle ScholarDigital LibraryDigital Library
  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-1Google ScholarGoogle Scholar
  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.pdfGoogle ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  351. Ville Voutilainen. 2016b. Presentation at WG21 meeting in Jacksonville, Florida. Feb. 2016.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar
  367. Anthony Williams. 2012. C++ Concurrency in Action – Practical Multithreading. Manning Publishing, Shelter Island, NY, USA. 978-1933988771Google ScholarGoogle Scholar
  368. Anthony Williams. 2018. C++ Concurrency in Action – Practical Multithreading (2nd edition). Manning Publishing, Shelter Island, NY, USA. 978-1617294693Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarDigital LibraryDigital Library
  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 ).Google ScholarGoogle Scholar
  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 Google ScholarGoogle ScholarCross RefCross Ref
  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 ).Google ScholarGoogle Scholar
  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 ).Google ScholarGoogle Scholar

Index Terms

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

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!