| C++20 | |
| Date de première version | |
|---|---|
| Site web | www.iso.org/standard/79358.html |
| modifier |
|
C++20 est une version de la norme ISO / IEC définissant le langage de programmation C++. La norme a été techniquement finalisée par le WG21 lors de la réunion de Prague en , approuvée le ,, et publiée par l'ISO en .
Le dernier working draft gratuit est le N4861, qui date du , les seules différences avec le standard étant des corrections éditoriales.
C++20 ajoute plus de nouvelles fonctionnalités majeures que C++14 ou C++17. Les modifications qui ont été acceptées ou discutées pour inclusion dans C++20 incluent :
[=, this] par les lambda.operator<=>.for.Typename facultatif dans certaines circonstances.[[no_unique_address]], [[likely]] et [[unlikely]].explicit conditionnel permettant au modificateur explicit de dépendre d'une expression booléenne.constexpr aux fonctions virtuelles, union, try - catch, dynamic_cast et typeid, std::pointer_traits.consteval imposant l'évaluation à la compilation d'une fonction.using aux énumérations enum class.constinit impose l'initialisation constante d'une variable constante statique.std::make_shared et std::allocate_shared sur les tableauxstd::atomic<shared_ptr<T>> et std::atomic<weak_ptr<T>>.std::to_address pour convertir un pointeur en pointeur brut.<chrono>.std::span fournissant une vue sur un tableau contigu (analogue à std::string_view mais avec la possibilité de modifier la séquence référencée).std::erase et std::erase_if simplifiant l'effacement des éléments pour la plupart des conteneurs standard.<version>.std::bit_cast<> pour la conversion des représentations d'objets, moins verbeux que memcpy() et capable d'exploiter les structures internes du compilateur.constexpr dans la bibliothèque standard.std::map::contains.std::bind_front.Ajout de nombreux nouveaux mots-clés : concept, constinit, consteval, co_await, co_return, co_yield, requires et char8_t (support d'UTF-8).
Ajout d'identifiants avec une signification particulière : import et module.
C++20 a également supprimé certaines fonctionnalités :
<ccomplex>, <ciso646>, <cstdalign>, <cstdbool> et <ctgmath> ont été supprimés car inutiles en C++ (les en-tête <*.h> restent, pour la compatibilité avec C. ).throw() comme spécification d'exception a été supprimée.std::uncaught_exception, std::raw_storage_iterator, std::is_literal_type, std::is_literal_type_v, std::result_of et std::result_of_t.Les fonctionnalités dépréciées incluent :
volatile.