C++ 20 receives final technical approval

C++ 20 receives final technical approval

C++ language upgrade featuring modules and coroutines is set to be released before the end of the year

Credit: Dreamstime

Having attained final technical approval from ISO on September 4, C++ 20 is expected to be formally published toward the end of this year, introducing new features such as modules and coroutines.

Designed in 1979 for systems programming, C++ remains a vital language. C++ was even found to be the fastest-growing language in the Tiobe Index of September 2020, where it ranks in fourth place behind C, Java, and Python. Tiobe cites the C++ 20 specification as one of the factors giving the language a boost.

New capabilities in C++ 20 include modules, enabling programmers to use modular components and concepts, used to specify template requirements and support generic programming - concepts promise to improve code quality.

Other key features span a synchronisation library, for better support of fine-grained hardware control; compile-time computation improvements and coroutines, which generalise subroutines for use in nonpreemptive multi-tasking. Standardised support for coroutines in the standard library is still lacking, however. This support is eyed for C++ 23.

Delving deeper, further offerings centre around ranges, which provide components to deal with ranges of elements; feature test macros, a set of macros that correspond to language and library features from C++ 11 or later and pre-calculated hash values in look-up, in addition to expansion statements to enable compile-time repetition of a statement for each element of a tuple, array, class, parameter pack, or range.

Rounding off the list of new features are monadic operations for std::optionalcode; implicit creation of objects for low-level manipulation; improved context-sensitive recognition of import and module to aid non-compiler tools to determine build dependencies and new rangified algorithms.

A contracts capability that had been expected in C++ 20, to specify pre-conditions, post-conditions, and assertions, has been removed. Contracts is now marked as a C++ 23 item, although it may not make it into that release, either.

Follow Us

Join the newsletter!


Sign up to gain exclusive access to email subscriptions, event invitations, competitions, giveaways, and much more.

Membership is free, and your security and privacy remain protected. View our privacy policy before signing up.

Error: Please check your email address.

Tags C++



Show Comments