pour la granularité (pour fixer la "version") de la syntaxe à utiliser, j'ai effectivement mentionné par unité de compilation, ce qui soulève les points que tu mentionnes ;
on pourrait l'avoir par fichier sur la ligne de commande, ce qui nécessiterait de mettre les .h (et leur version) dans la ligne de commande ;
ou beaucoup plus fin, en attribut, que ça soit en tête de fichier, de classe, de fonctions, etc. (
https://en.cppreference.com/w/cpp/language/attributes)
on garderait un réglage global du projet, comme réglage par défaut, avec la version "maximale" de la syntaxe à utiliser, et on flaggerait le code legacy comme tel (par fichier, en attribut, etc.).
lorsqu'un besoin de mettre à jour du code legacy est nécessaire, on peut soit mettre un attribut sur le code en question, qui override le réglage précédent (par exemple dans un fichier "c++03", mettre un attribut "c++11" à une fonction en particulier),
soit déplacer ce code vers un nouveau fichier compilé avec le réglage par défaut.
le problème majeur à ça que je vois c'est faire en sorte de pouvoir mettre à jour la déclaration des classes sans casser l'implémentation existante, donc avoir la possibilité de séparer la version de syntaxe pour la déclaration d'une classe de la version pour l'implémentation de cette classe.
cela me semble loin d'être impossible, vu que ce qui importe dans ce cas c'est de garder la même organisation en mémoire.
Partager