Contexte du vote DIS
Le processus de vote DIS (Draft International Standard) de l’ISO/IEC SC22 exige deux seuils : deux tiers des voix favorables sur 20 membres (soit 14) et au maximum un quart des voix négatives sur 22 membres (cinq). Le projet C++26, qui intègre la réflexion, std::execution, le durcissement de la bibliothèque et les contrats, a été soumis à ce scrutin le 23 octobre 2026.
Résultat chiffré et répartition des votes
Le scrutin a recueilli 12 votes favorables, soit deux voix en dessous du seuil requis. En parallèle, neuf votes négatifs ont été enregistrés, dépassant largement la limite de cinq. Ainsi, le projet a échoué les deux critères simultanément. Les pays ayant exprimé un vote « No » sont le Danemark, la Finlande, l’Iran, l’Italie, le Japon, le Luxembourg, la Roumanie, l’Espagne et la Suède. La France et l’Irlande se sont abstenues tout en soumettant des commentaires, tandis que la Pologne et les États‑Unis se sont simplement abstenus.
Controverse technique autour des contrats
Les objections majeures portent sur l’inclusion des contrats dans le langage. Les contrats permettent de spécifier des pré‑ et post‑conditions directement dans la signature d’une fonction, offrant à la fois documentation vivante et vérification d’exécution. Le texte du projet définit quatre sémantiques d’évaluation : ignore, observe, enforce et quick‑enforce. La décision finale revient à l’implémentation ; par exemple, GCC 16 sélectionne la sémantique via un drapeau de compilation. Le débat porte sur le fait de savoir si une assertion de contrat doit être considérée comme une simple vérification pouvant être désactivée (ignore/observe) ou comme une garantie sur laquelle le programme peut s’appuyer (enforce/quick‑enforce). Le code suivant illustre la syntaxe proposée :
#include <cmath>
double checked_sqrt(double x)
pre (x >= 0.0)
post (r : r >= 0.0)
{
const double root = std::sqrt(x);
contract_assert(!std::isnan(root));
return root;
}
Les commentaires nationaux, non encore publiés, sont attendus d’ici mi‑janvier 2027 et devraient confirmer que les neuf votes négatifs concernaient exclusivement les contrats.
Perspectives et suites possibles
Après un échec DIS, la norme peut suivre l’une des quatre voies prévues : (1) lancer un nouveau projet de révision avec un vote de huit semaines, (2) recirculer le projet de comité pour commentaires, (3) le publier comme spécification technique, ou (4) annuler le projet. La décision finale incombe au président du SC22, en concertation avec le secrétariat et le convener WG21. La prochaine réunion WG21 se tiendra à Búzios, Brésil, du 16 au 21 novembre 2026, où les orientations seront probablement définies.