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.

Tags C++

Show Comments