Les Draft Papers sont vraiment une source d'informations très précise, mais ils ne sont pas vraiment structurés. En fait, ils ne sont destinés qu'aux éditeurs de logiciels désirant réaliser un compilateur, et la structure du document ressemble à un texte de loi (fortement technique en prime). Les exemples y sont rares, et quand il y en a, on ne sait pas à quel paragraphe ils se réfèrent. Enfin, nombre de termes non définis sont utilisés, et il faut lire le document pendant quelques 40 pages avant de commencer à le comprendre.
Afin de faciliter leur lecture, je donne ici quelques définitions, ainsi que la structure des Draft Papers.
Les Draft Papers sont constitués de deux grandes parties. La première traite du langage, de sa syntaxe et de sa sémantique. La deuxième partie décrit la bibliothèque standard C++.
La syntaxe est décrite dans la première partie de la manière BNF. Il vaut mieux être familiarisé avec cette forme de description pour la comprendre. Cela ne causera pas de problème cependant si l'on maîtrise déjà la syntaxe du C++.
Lors de la lecture de la deuxième partie, on ne s'attardera pas trop sur les fonctionnalités de gestion des langues et des jeux de caractères (locales). Elles ne sont pas nécessaires à la compréhension de la bibliothèque standard. Une fois les grands principes de la bibliothèque assimilés, les notions de locale pourront être approfondies.
Les termes suivants sont souvent utilisés et non définis (ou définis au milieu du document d'une manière peu claire). Leurs définitions pourront être d'un grand secours lors de lecture de la première partie des Draft Papers :
cv, cv qualified : l'abréviation cv signifie ici const ou volatile. Ce sont donc les propriétés de constance et de volatilité ;
un agrégat est un tableau ou une classe qui n'a pas de constructeurs, pas de fonctions virtuelles, et pas de donnée non statique private ou protected ;
POD : cette abréviation signifie plain ol' data, ce qui n'est pas compréhensible a priori. En fait, un type POD est un type relativement simple, pour lequel aucun traitement particulier n'est nécessaire (pas de constructeur, pas de virtualité, etc.). La définition des types POD est récursive : une structure ou une union est un type POD si c'est un agrégat qui ne contient pas de pointeur sur un membre non statique, pas de référence, pas de type non POD, pas de constructeur de copie et pas de destructeur.
Les autres termes sont définis lorsqu'ils apparaissent pour la première fois dans le document.