C++23
Apparence
C++23 | |
modifier |
C++23 est une version de la norme ISO/IEC 14882 définissant le langage de programmation C++ qui suit la version C++20[1]. La norme a été finalisée par le WG21 lors de la réunion à Issaquah en février 2023[2]. Le dernier working draft gratuit est le N4950, qui date du [3].
Fonctionnalités
[modifier | modifier le code]Les modifications qui ont été acceptées pour inclusion dans C++23 incluent :
Langage
[modifier | modifier le code]if consteval
[4]- opérateur d'indexation
[]
multidimensionnel (par exemplev[1, 3, 7] = 42;
)[5] - opérateurs d'appel
()
et d'indexation[]
statiques et lambdas statiques[6],[7] auto(x)
etauto{x}
[8]- nouvelles directives de préprocesseur :
- extension de la durée de vie de certaines temporaires dans les boucles
for
range-based[11] - nouvel attribut standard
[[assume(expression)]]
[12] - déduction des arguments de classe template depuis les constructeurs hérités[13]
- labels à la fin d'un bloc d'instructions[14]
- déclaration d'alias dans les init-statements[15]
- suffixes littéraux
uz
etz
pourstd::size_t
etstd::ssize_t
[16] - types flottants étendus
std::float16_t
,std::float32_t
,std::float64_t
,std::float128_t
,std::bfloat16_t
[17] ()
facultatif pour les expressions lambdas nullaires[18]- attributs sur les expressions lambdas[19]
- modifications de
constexpr
: - réduction des conversions contextuelles vers
bool
dans lesstatic_assert
etif constexpr
[22] - suppression des espaces avant la jonction des lignes[23]
- séquences d'échappement délimitées[24]
- caractères d'échappement universels nommés[25]
- modifications de l'encodage du texte :
Bibliothèque
[modifier | modifier le code]Références
[modifier | modifier le code]- (en) « The Standard : Standard C++ », sur isocpp.org (consulté le )
- (en) Herb Sutter, « C++23 “Pandemic Edition” is complete (Trip report: Winter ISO C++ standards meeting, Issaquah, WA, USA) », sur Sutter’s Mill, (consulté le )
- (en) Working Draft, Standard for Programming Language C++, (lire en ligne)
- (en) Barry Revzin, Richard Smith, Andrew Sutton et Daveed Vandevoorde, « if consteval »,
- (en) Mark Hoemmen, Daisy Hollman, Corentin Jabot, Isabella Muerte et Christian Trott, « Multidimensional subscript operator »,
- (en) « static operator() »,
- (en) « static operator[] »,
- (en) Zhihao Yuan, « auto(x): decay-copy in the language »,
- (en) Melanie Blower, « Add support for preprocessing directives elifdef and elifndef »,
- (en) Aaron Ballman, « Support for #warning »,
- (en) « Wording for P2644R1 Fix for Range-based for Loop »,
- (en) « Portable assumptions »,
- (en) Timur Doumler, « Wording for class template argument deduction from inherited constructors »,
- (en) « Labels at the end of compound statements (C compatibility) »,
- (en) Jens Maurer, « Extend init-statement to allow alias-declaration »,
- (en) JeanHeyd Meneide et Rein Halbersma, « Literal Suffix for (signed) size_t »,
- (en) « Extended floating-point types and standard names »,
- (en) Alex Christensen et JF Bastien, « P1102R2: Down with ()! »,
- (en) « Attributes on Lambda-Expressions »
- (en) Ville Voutilainen, « Non-literal variables (and labels and gotos) in constexpr functions »,
- (en) « Permitting
static constexpr
variables inconstexpr
functions », - (en) Andrzej Krzemieński, « Narrowing contextual conversions to bool »,
- (en) Corentin Jabot, « Trimming whitespaces before line splicing »,
- (en) « Delimited escape sequences »,
- (en) « Named universal character escapes »,
- (en) « Support for UTF-8 as a portable source file encoding »,
- (en) Corentin Jabot, « Consistent character literal encoding »,
- (en) Jens Maurer, « Character sets and encodings »,