Generated by GPT-5-mini| ISO C++17 | |
|---|---|
| Name | C++17 |
| Year | 2017 |
| Designer | Bjarne Stroustrup, ISO/IEC JTC 1/SC 22/WG 21 |
| Paradigm | Imperative programming, Object-oriented programming, Generic programming, Functional programming |
| Typing | Static typing, Nominal type system |
| Influenced by | C++14, C++11, ALGOL 68, Simula, Ada (programming language) |
| Influenced | C++20, Rust (programming language), D (programming language) |
ISO C++17 ISO C++17 is an international standard for the C++ programming language published in 2017, formalized by International Organization for Standardization and International Electrotechnical Commission committees. It follows predecessors like C++11 and C++14 and precedes C++20, introducing language and library refinements intended to improve LLVM, GCC, Microsoft (company), and Clang compiler ecosystems. Major vendors such as Intel Corporation, IBM, ARM Holdings, and organizations including Linux Foundation and ISO/IEC JTC 1 engaged in the standardization process.
C++17 refines core C++ syntax and semantics to reduce Undefined behaviour sources and enable optimizations used by GCC, Clang, MSVC, Intel C++ Compiler, and LLVM-based toolchains. The committee ISO/IEC JTC 1/SC 22/WG 21 produced defect reports and Technical Specifications guiding adoption by projects like Boost (C++ libraries), Qt (software), Mozilla, Chromium and Apache Software Foundation projects. The revision emphasized pragmatic changes influenced by implementers from Google (company), Facebook, Apple Inc., and academic groups at MIT, Stanford University, Carnegie Mellon University.
C++17 added language constructs and changed existing rules to support modern patterns used in Linux kernel, Windows, macOS, Android (operating system) development and performance-critical systems in NVIDIA and AMD ecosystems. Notable features include structured bindings that simplify destructuring used in Boost.Asio, Eigen (software), and OpenCV codebases; inline variables that affect linkage across ELF and COFF object formats handled by GNU Binutils; and guaranteed copy elision that impacts ABI stability for libraries like Qt (software) and wxWidgets. The standard introduced fold expressions to compact variadic template patterns leveraged by Google and Facebook open-source projects, and constexpr enhancements enabling more compile-time computation used in LLVM metaprogramming. Deprecated features and tightened template deduction rules affected compilers from GCC and MSVC and required coordination with POSIX-targeted code.
The standard library additions targeted common needs across Boost (C++ libraries), STL, Apache Arrow, and TensorFlow. New utilities include std::optional for nullable value semantics popular in Qt (software), std::variant for tagged unions used in Mozilla and Chromium code, std::any for type erasure patterns seen in Electron (software framework), and std::filesystem for path manipulation aligned with POSIX and Windows API behaviors. Parallel algorithms leveraging OpenMP and thread support affected implementations by Intel Corporation and NVIDIA, while string_view reduced copies in Boost.Spirit and fmt (library). Several containers and algorithms were tweaked for performance on platforms from ARM Holdings and x86-64 vendors.
Work on the revision occurred within ISO/IEC JTC 1/SC 22/WG 21 with editors and proposers from Bjarne Stroustrup, Herb Sutter, and representatives from Google (company), Microsoft (company), Apple Inc., IBM. Key meetings took place alongside conferences such as CppCon, ACCU Conference, ACM SIGPLAN events, and BoostCon. Implementations and conformance test suites were developed by teams at LLVM, GNU Project, Microsoft Research, and contributors from Red Hat and SUSE, while major compiler releases—GCC 7, Clang 5.0, and MSVC 2017 updates—documented feature availability and defect resolutions. The standardization process referenced Technical Specifications and Papers presented at venues including ACM SIGPLAN Conference on Programming Language Design and Implementation.
Adoption of C++17 influenced large codebases at Google (company), Facebook, Microsoft (company), Apple Inc., Amazon (company), and open-source ecosystems like Kubernetes and Docker (software). Projects such as Chromium, Mozilla Firefox, LibreOffice, and Blender (software) migrated portions of their code to exploit constexpr and structured bindings. The standard shaped education and textbooks at institutions like Massachusetts Institute of Technology, University of Cambridge, and ETH Zurich, and affected certification and tooling vendors including JetBrains and Microsoft Azure. Commercial toolchains from Intel Corporation and ARM Holdings integrated features to optimize for GPU and embedded systems deployments.
Example migrations often involve replacing ad hoc nullable patterns with std::optional in code maintained by teams at Google (company), Mozilla, and Qt (software), and converting manual string handling to std::string_view in projects like Chromium and LibreOffice. Use of structured bindings and constexpr can simplify templates used in Boost libraries and Eigen (software). Compiler-specific flags (e.g., GCC -std=gnu++17, Clang -std=c++17, MSVC /std:c++17) and conformance testing with suites from Google Test and Boost.Test aid migration. For platform-specific ABI concerns consult vendor guidance from Red Hat, Microsoft (company), and Apple Inc.; continuous integration using Jenkins, GitLab CI, or GitHub Actions helps ensure compatibility across x86-64 and ARM64 targets.
Category:C++