À propos de WG21, Croydon 2026 (mars)

Je participe à cette rencontre à distance encore une fois (ces dernières années je n'ai pas réussi à mettre de côté les fonds requis pour aller à ces rencontres en personne, malheureusement). La rencontre de cette semaine se tenant à Croydon (Londres, Angleterre), le décalage horaire sera mais j'ai vu pire. J'aurais normalement eu des dossiers à défendre mais j'ai été très malade en février et je n'ai pas réussi à accorder à mes dossiers le suivi dont ils auraient eu besoin, alors ça ira à cet été pour moi. De toute manière, cette semaine, le centre d'attention est C++ 26 et mes dossiers visent C++ 29.

Certains dossiers chauds à propos de la réflexivité statique demanderont des efforts, et les contrats demeurent controversés (c'est le dossier le plus controversé depuis des années; j'aimerais bien qu'ils deviennent officiellement partie du langage pour que nous puissions les mettre vraiment à l'essai et mieux comprendre comment bien les utiliser). Je devrais passer ma semaine chez CWG comme à mon habitude.

Ce sera la première prestation de Guy Davidson à titre de Convener. La structure administrative du comité change, ce qui est normal dans les circonstances. Une modernisation notoire est que nous passons d'un Wiki commun où nous partagions tous et toutes une même identité (oui, je sais!) à un Wiki où nous sommes identifiés individuellement et où nos avons des privilèges en conséquence. C'est une bonne idée.

Tout ce qui suit est anonymisé et simplifié, dans le respect du code de conduite d'ISO en vigueur lors de nos rencontres.

Ce document est incomplet (j'ai manqué de temps). Je compléterai dès que possible.

Pour les « journaux de voyage » d'autres participants, voir :

Jour 0 – 23 mars 2026

C'est un drôle d'horaire cette semaine car le changement d'heure a eu lieu au Québec mais il se produira en Europe à la fin de la semaine. C'est moins violent pour moi (on commence à 4 h 30 heure de Montréal plutôt que 3 h 30 comme ce serait normalement le cas).

Nina Ranns fait l'accueil, puis passe le micro à Guy Davidson. Guy Davidson mentionne la présence de 27 pays cette semaine. Entre autres, on a la Russie et l'Ukraine, les États-Unis et la Chine... Beaucoup de monde! Phil Nash est notre hôte et nous dit quelques mots.

Nina Ranns présente le code de conduite, et les règles lors des votes. Le nouveau système de Wiki mène à des applaudissements bien mérités. On laisse les nouveaux membres et les invité(e)s se présenter. Pour une première fois, à ma connaissance, quelqu'un se présente comme un « producteur de contenu »; on a aussi quelques personnes de Rust qui est présent pour aider à l'interopérabilité entre nos deux langages, incluant la personne qui gère wg21.link ce qui est doublement chouette! On a aussi une représentante de Apple qui vient pour discuter d'interopérabilité avec Swift.

On présente l'organisation de la semaine et la répartition des groupes d'études comme des groupes de travail dans les diverses salles. Il semble qu'il y aura une alerte d'incendie dans le courant de la semaine (c'est gentil de nous prévenir). Il y aura quatre séances de soirée cette semaine, sur des thèmes intéressants d'ailleurs.

Le gros morceau de la semaine est le traitement des NB Comments de C++26. Le dossier le plus chaud est probablement celui des contrats, acceptés à la plus récente rencontre mais auxquels il y a encore de l'opposition (et de l'exaspération, il faut le dire).

Nina Ranns fait un rappel de l'importance de se comporter de manière humaine. Elle est vraiment excellente à cela.

La plénière se termine et les gens se déplacent vers les salles où se tiendront les travaux qui les touchent le plus. Pour moi, ce sera CWG comme à l'habitude.


(j'ai été ralenti par des ennuis de connectivité alors j'ai manqué le début de la rencontre; on fait le tri des NB Comments à traiter quand je parviens à rejoindre le groupe)

P3924 – Fix inappropriate font choices for "declaration"

On a deux polices de caractères trop semblables pour deux familles de termes distinctes du standard, et ça a provoqué des erreurs récemment. On vise à corriger cela.

On fait le tour des sections affectées. Tout semble Ok. David Herring se questionne sur l'intérêt d'avoir autant de variantes de « déclarateur » dans le texte et propose une approche alternative, mais je ne pense pas qu'on va faire ça cette semaine.

Avec des changements très mineurs, on soumettra ceci pour vote samedi.

Core Issue 2228. Ambiguity resolution for cast to function type

Ceci est (étrangement) ambigu :

int x = (int()) + 5;

Ceci est dû à une ambiguïté (est-ce une signature de fonction ou est-ce un int par défaut?). On a d'autres cas :

struct T { int operator++(int); T operator[](int); };
int a = (T()[3])++; // not a cast

(S())[]->A<int>;              // OK, constructor call
(S())[]->A<int> {return {};}; // error: C-style cast of lambda

On examine la proposition de changement à la grammaire pour résoudre le tout (ça introduit un terme grammatical amusant : nofun). Ça change un exemple :

template <class T> struct X {};
template <int N> struct Y {};
X<int()> a;   // type-id
X<int(1)> b;  // expression (ill-formed)
Y<int()> c;   // type-id (ill-formed)
Y<int(1)> d;  // expression
void foo(signed char a) {
  sizeof(int());    // type-id (ill-formed) expression
  sizeof(int(a));   // expression
  sizeof(int(unsigned(a)));    // type-id (ill-formed) expression
  (int())+1;              // type-id (ill-formed) expression
  (int(a))+1;             // expression
  (int(unsigned(a)))+1;   // type-id (ill-formed) expression
}
typedef struct BB { int C[2]; } *B, C;
void g() {
sizeof(B()->C[1]);     // OK, sizeof(expression)
sizeof(auto()->C[1]);  // error: sizeof of a function returning an array
}

On examine la grammaire résultante et certaines pensent que ça brise les déclarations de fonctions avec trailing return types. On travaille un peu et on arrive à résoudre cette préoccupation. Ça nous prend le reste de l'avant-midi. On penche pour Tentatively Ready mais c'est un changement compliqué alors on hésite. John Spicer suggère de viser C++29 mais d'en faire un DR, pour se donner le temps de réfléchir.

(je dois ensuite quitter pour la journée car j'ai un rendez-vous médical de routine puis j'enseigne).

Jour 1 – 24 mars 2026

 

 

 

xx

xx

xx

xx

xx

xx

 

xx

xx

xx

xx

xx

xx

 

 

Jour 2 – 25 mars 2026

xx

xx

xx

xx

xx

xx

 

 

Jour 3 – 26 mars 2026

xx

xx

xx

xx

xx

xx

 

 

Jour 4 – 27 mars 2026

xx

xx

xx

xx

xx

xx

 

 

 

Jour 5 – 28 mars 2026

Après quelques irritants audio, John Spicer nous accueille.

Rapports des groupes d'études

SG1: Concurrency and Parallelism Study Group :

SG2: Modules Study Group : inactif cette semaine

SG3: File System Study Group : inactif cette semaine

SG4: Networking Study Group : inactif cette semaine

SG5: Transactional Memory : inactif cette semaine

SG6: Numerics :

SG7: Reflection : inactif cette semaine

SG8: Concepts : inactif cette semaine

SG9: Ranges :

SG10: Feature Test : inactif cette semaine

SG12: Undefined and Unspecified Behavior : inactif cette semaine

SG13: I/O : inactif cette semaine

SG14: Low Latency : inactif cette semaine, mais on travaille chaque mois sur la proposition de Patrice Roy et sur les exceptions pour systèmes embarqués

SG15: Tooling : quelques travaux cette semaine

SG16: Unicode : inactif cette semaine mais on progresse

SG17: EWG Incubator : inactif cette semaine

SG18: LEWG Incubator : inactif cette semaine

SG19: Machine Learning :

SG20: Education : inactif cette semaine

SG21: Contracts : inactif cette semaine

SG22: C/C++ Liason : inactif cette semaine

SG23: Safety and Security :

ABI Group : inactif cette semaine

Admin Group :

Rapports des groupes de travail

EWG :

LEWG :

CWG :

LWG :

Votes proposés par CWG

Les votes amenés par CWG cette semaine sont les suivants.

Votes proposés par LWG

Les votes amenés par LWG cette semaine sont les suivants.

Votes proposés par WG21

Il n'y en a pas cette fois.

Autres rapports

Direction group :


Valid XHTML 1.0 Transitional

CSS Valide !