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 :
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)
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.
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 lambdaOn 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).
xx
xxxx
xx
xxxx
xx
xxxx
xx
xxxx
xx
xxxx
xx
xxxx
xx
xxxx
xx
xxxx
xx
xxxx
xx
xxxx
Après quelques irritants audio, John Spicer nous accueille.
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 :
EWG :
LEWG :
CWG :
LWG :
Les votes amenés par CWG cette semaine sont les suivants.
Les votes amenés par LWG cette semaine sont les suivants.
Il n'y en a pas cette fois.
Direction group :