What are the new features in C 17?
C 17 brings numerous enhancements and additions to the language, including:
Language Features:
- Template argument deduction for template classes
-
Modernizing using with ... and lists: Provides a cleaner syntax for using std::initializer_list.
-
Cleaner multi-return and flow control: Introduces features like structured bindings and if constexpr, simplifying complex control flow scenarios.
-
Generalized range-based for loops: Extends range-based for loops to support sentinels and non-container types.
-
Arrays of pointer conversion fixes: Addresses issues with converting arrays of pointers to different pointer types.
Library Additions:
-
Data types: Adds std::variant, std::optional, std::any, and std::string_view to enhance data handling and manipulation.
-
invoke stuff: Introduces std::invoke and std::apply to simplify function invocation and argument handling.
-
File System TS v1: Offers a standardized API for file system operations.
-
New algorithms: Includes algorithms like transform_reduce, exclusive_scan, and others, optimized for parallelism and efficiency.
-
Threading: Enhances threading capabilities with std::shared_mutex and other features.
-
Library Fundamentals TS v1: Provides functionality for search algorithms, polymorphic allocators, and other utilities.
-
Container Improvements: Adds try_emplace, insert_or_assign, splicing, and more for improved container handling.
-
Smart pointer changes: Includes fixes and enhancements to unique_ptr and weak_from_this.
-
Miscellaneous: Includes utility functions like std::clamp, std::lcm, and others, expanding the standard library's capabilities.
Deprecated and Removed Features:
-
Removed: register keyword, trigraphs, ios aliases, and others.
-
Deprecated: allocators in std::function and some C libraries.
Note:
- Some features may not be available in all compilers until they support C 1z, which includes C 17 and additional updates.
- Refer to official documentation for comprehensive details and specifications.
The above is the detailed content of What's New in C 17: A Guide to its Key Features and Enhancements?. For more information, please follow other related articles on the PHP Chinese website!