The complete list of C++17 features can be found at http://en.cppreference.com/w/cpp/compiler_support#C.2B.2B17_features.
To give a high-level idea, the following are some of the new C++17 features:
- New auto rules for direct-list-initialization
static_assert
with no messages- Nested namespace definition
- Inline variables
- Attributes for namespaces and enumerators
- C++ exceptions specifications are part of the type system
- Improved lambda capabilities that give performance benefits on servers
- NUMA architecture
- Using attribute namespaces
- Dynamic memory allocation for over-aligned data
- Template argument deduction for class templates
- Non-type template parameters with auto type
- Guaranteed copy elision
- New specifications for inheriting constructors
- Direct-list-initialization of enumerations
- Stricter expression evaluation order
shared_mutex
- String conversions
Otherwise, there are many new interesting features that were added to the core C++ language: STL, lambadas, and so on. The new features give a facelift to C++, and starting from C++17
, as a C++ developer, you will feel that you are working in a modern programming language, such as Java or C#.
The following features are now removed in C++17:
- The
register
keyword was deprecated in C++11 and got removed in C++17 - The
++
operator forbool
was deprecated in C++98 and got removed in C++17 - The dynamic exception specifications were deprecated in C++11 and and got removed in C++17