À propos de WG21,
Zoom 2021 (février)
Nous avons tenu une rencontre plénière du WG21
le 22 février 2021, à
travers Zoom. J'ai donc participé à cette rencontre et aux votes à distance,
comme toutes mes collègues et tous mes collègues du comité.
Tout ce qui suit est anonymisé et simplifié, dans le respect du code de
conduite d'ISO
en vigueur lors de nos rencontres.
Pour les « journaux de voyage » d'autres participants, voir :
Déroulement de la rencontre
C'est toujours agréable de revoir les collègues, même si c'est énormément
plus agréable (et stimulant!) en personne. Avec toutes les rencontres virtuelles
que nous avons en cette période de pandémie, je peine à suivre ces dossiers qui
me tiennent à coeur.
La signature de feuille de présence s'est faite de manière virtuelle : il
fallait confirmer sa présence à travers
ISO au
préalable, et la liste de participant(e)s de Zoom a permis de valider la
présence effective.
On comptait environ 114 personnes pendant la
rencontre. Ce qui était vraiment impressionnant est le nombre de pays
participants (le nombre de NB),
soit 18 : Autriche, Bulgarie, Canada, République Tchèque, Finlande, France, Allemagne, Israël, Italie, Japon, Pays-Bas, Pologne, Roumanie, Russie, Espagne, Suisse, Royaume-Uni et États-Unis.
Comme c'est l'usage, une partie de l'amorce de la rencontre a porté sur un rappel du
code de conduite et d'autres règles de procédure (p. ex. : pas de diffusion pendant que la
réunion procède). Le code de conduite est particulièrement important dans le monde
d'aujourd'hui... La tradition était Don't be a jerk, mais ce n'est plus
suffisant. Le mot clé est « respect », et on insiste beaucoup sur le fait qu'il
faut présumer de la bonne foi d'autrui, pour éviter des incidents reposant sur
une incompréhension culturelle... John Spicer, qui est Chair de
WG21, remercie
chaleureusement tous les participants qui tiennent le flambeau en ces temps
difficiles.
Un tour de table de présentation suit; on se limite aux Chairs et aux
nouveaux membres cette fois. C'est déjà beaucoup de monde!
Un petit ajustement est fait à l'agenda (une erreur dans un nom de document),
puis nous procédons à l'approbation des WD de
C++ 23
(N4878) et du Library
Fundamentals TS (N4873).
Ce qui est soumis à un vote aujourd'hui
Les votes sont groupés par groupe de travail, comme à l'habitude.
Objets amenés en plénière par
CWG
Les objets amenés pour vote par
CWG suivent. Il y en a
peu cette fois, le nombre de rencontres ayant été réduit dû aux Fêtes.
- Un ensemble de correctifs (DR)
apportés au langage (P1787).
Unanime
- Un ensemble de correctifs (DR)
apportés au langage (P2313).
Unanime
- Un qui me fait plaisir, soit « Down With ()! » (P1102)
qui réduit la liste de cas où de parenthèses sont requises pour instancier une
λ. Unanime
Objets amenés en plénière par
LWG
Les objets amenés pour vote par
LWG suivent.
- Un ensemble de correctifs (DR)
apportés à la bibliothèque (P2315)
pour C++ 20.
Unanime
- Un correctif quant à la spécification des Input Range Adaptors et
des counted_iterator (P2259). Unanime
- Relaxer les contraintes associées à time_point::clock
(P2212).
Unanime
- Appliquer des changements mis de l'avant par P2162,
« Inheriting from
std::variant »
- Celui-ci fut un peu contentieux. Une objection fut levée à l'effet que la
solution proposée n'est pas la bonne. Nous avons discuté (je vous passe les
détails). Une question soulevée était de savoir si ce correctif, ciblé, nuira
à des correctifs ultérieurs plus ambitieux; il semble que non. On note qu'un
avantage de cette proposition est qu'elle clarifie la mécanique de
std::visit(), et pour cette raison qu'elle réduit les divergences
d'implémentation. Les demandes de vote sont retirées suivant ces
clarifications.
Unanime
- Appliquer les changements mis de l'avant par P2160,
« Locks lock lockables », qui épure la spécification des mutex et des verrous qui les accompagnent. Unanime
- Appliquer les changements mis de l'avant par P2017,
« Conditionally Borrowed Ranges », qui rend l'utilisation de
Ranges plus simple et plus agréable. Unanime
- Adopter P1682,
« std::to_underlying
for enumerations », qui ajoute une chouette petite fonction pour
faciliter le traitement d'une énumération comme un cas particulier de son type
sous-jacent (en gros, ça donne :
template <class E>
constexpr auto to_underlying(E e) {
return static_cast<std::underlying_type_t<E>>(e);
}
- ... ce qui est simple, efficace, et réduit les risques d'erreurs bêtes). Unanime
- Appliquer les changements mis de l'avant par P0533,
« constexpr for <cmath>
and <cstdlib> » qui, comme son nom
l'indique, vise à déterminer les critères qui permettront de décider quand il
est oportun d'appliquer constexpr aux versions
C++
de ces fonctions provenant originalement du langage
C
- Cette proposition a mené à des objections, du fait que nous n'avons pas
d'expérience d'implémentation (certaines fonctions doivent modifier la
variable globale errno en cas d'erreurs, ce qui
n'est pas possible dans un contexte constexpr). L'option de ne pas être
constexpr en cas d'erreur est suggérée. On soulève que cette proposition est
passée de
LEWG à
LWG avant l'adoption de
C++ 20
et l'atteinte de la maturité par
std::is_constant_evaluated(), ce qui peut en influencer la lecture. Un
vote est tenu; ce vote est majoritaire, mais on n'atteint pas le consensus. On
la retravaillera avant une prochaine plénière
Quelques contentieux, mais somme toute mineurs.
Objets amenés en plénière par
LEWG
Les objets amenés pour vote par
LEWG suivent. Notez
qu'il est un peu inhabituel de voir
LEWG porter un objet
en plénière, mais la proposition visée ne comprenait pas de terminologie.
- La proposition était P1919,
« Expanding the Rights in SD-8 », qui clarifie les
privilèges de nommage de la bibliothèque standard. Unanime
Autres objets de discussion
L'essentiel du reste de la rencontre fut pour clarifier que nous ne tiendrons
que des rencontres virtuelles en 2021. La prochaine
rencontre envisageable serait en 2022 à Portland (Oregon).