C++20
C++20 is the informal name for the revision of the ISO/IEC standard for the C++ programming language expected to follow C++17. [1] The C++ Standards Committee began planning C++20 in July of 2017. [2]
Below is a partial list of changes that have been proposed or discussed for inclusion into C++20. [3]
Possible new language features
The following were voted into the C++20 draft in July 2017:[4]
- Concepts[5]
- Designated initializers[6] (based on the C99 feature)
-
[=, this]
as a lambda capture[7] - Template parameter lists on lambdas[8]
Other possible new language features:
- Coroutines[9]
- Modules[10] – experimentally supported in Clang 5[11] and Visual Studio 2015 Update 1
- Transactional memory[12]
- Reflection[13]
Possible library changes
- Atomic smart pointers[14] (std::atomic_shared_ptr and std::atomic_weak_ptr)
- Extended futures[15]
- Latches and barriers[16]
- Networking extensions[17], including async, basic IO services, timers, buffers and buffer-oriented streams, sockets, and internet protocols.
- Ranges[18]
- Task blocks[19]
- Metaclasses[20]
See also
References
- ↑ "The next standard after C++17 will be C++20"., by Herb Sutter
- ↑ "Current Status : Standard C++".
- ↑ "P0592R0: To boldly suggest an overall plan for C++20".
- ↑ Herb Sutter. "Trip report: Summer ISO C++ standards meeting (Toronto)".
- ↑ "P0606R0: Concepts Are Ready" (PDF).
- ↑ Tim Shen; Richard Smith. "Designated Initialization Wording".
- ↑ Thomas Köppe. "Allow lambda capture [=, this]".
- ↑ "Familiar template syntax for generic lambdas".
- ↑ "N4649: Working Draft, Technical Specification on C++ Extensions for Coroutines" (PDF).
- ↑ "N4637: Working Draft, Extensions to C++ for Modules" (PDF).
- ↑ "Clang 5 documentation on Modules".
- ↑ "N3341: Transactional Language Constructs for C++" (PDF).
- ↑ "Reflections on the reflection proposals - Meeting C++". meetingcpp.com. Retrieved 2017-06-30.
- ↑ "Atomic Smart Pointers".
- ↑ "Functional in C++17 and C++20".
- ↑ "P0342R0: Timing barriers".
- ↑ "N4656: Working Draft, C++ Extensions for Networking" (PDF).
- ↑ "N4651: Working Draft, C++ Extensions for Ranges" (PDF).
- ↑ "Task Blocks".
- ↑ Herb Sutter. "Metaclasses" (PDF).
External links
- JTC1/SC22/WG21 – the ISO/IEC C++ Standard Working Group (a.k.a. the C++ Standards Committee)
- Ranges (range-v3) github repository, by Eric Niebler
This article is issued from
Wikipedia.
The text is licensed under Creative Commons - Attribution - Sharealike.
Additional terms may apply for the media files.