Oui je trouve ça beaucoup plus lisible. À noter qu'ici tu as utiliser un outil encore plus pourave que la concaténation de chaines : l'opérateur d'injection. C'est une horreur totalement illisible, qui rend la compréhension du code tout à fait fatigante.
Avec une chaîne de format (qui sera utilisé par l'outil de localisation), on peut se concentrer sur la manière de formater le texte, puis de décider quelles données fournir.
Au fait, l'opérateur d'injection n'est pas disponible pour les std::string, mais pour les std::stringstream.
Mais n'étant pas un sauvage, j'utilise boost::format depuis un moment.
Ta critique sur l'inférence de type est risible. C'est une chaîne de formatage, ce qui implique qu'on formate la sortie. La précision du type est historique, mais on peut aussi vouloir préciser la précision, compléter le nombre, etc. Je sais bien que les stream permettent ça : mais c'est bien là tout le soucis de lisibilité qui pointe le bout de son nez. Là où il faut 4 caractère pour indiquer un format pour afficher un nombre sur trois digit, il faut tout d'un coup configurer le flux à la volée. En première instance, c'est magique. Mais à l'usage, c'est pénible et illisible.
[^] # Re: Y'a-t-il encore besoin de nouveaux langages "bas niveau"?
Posté par LupusMic (site web personnel, Mastodon) . En réponse à la dépêche Le langage D. Évalué à 2.
Oui je trouve ça beaucoup plus lisible. À noter qu'ici tu as utiliser un outil encore plus pourave que la concaténation de chaines : l'opérateur d'injection. C'est une horreur totalement illisible, qui rend la compréhension du code tout à fait fatigante.
Avec une chaîne de format (qui sera utilisé par l'outil de localisation), on peut se concentrer sur la manière de formater le texte, puis de décider quelles données fournir.
Au fait, l'opérateur d'injection n'est pas disponible pour les std::string, mais pour les std::stringstream.
Mais n'étant pas un sauvage, j'utilise boost::format depuis un moment.
D'ailleurs, les Variadic Tuples vont te donner la migraine sur ce point. Herb Sutter montre un exemple d'application de VT qui concerne justement une écriture de de print type-safe http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/C-11-VC-11-and-Beyond
Ta critique sur l'inférence de type est risible. C'est une chaîne de formatage, ce qui implique qu'on formate la sortie. La précision du type est historique, mais on peut aussi vouloir préciser la précision, compléter le nombre, etc. Je sais bien que les stream permettent ça : mais c'est bien là tout le soucis de lisibilité qui pointe le bout de son nez. Là où il faut 4 caractère pour indiquer un format pour afficher un nombre sur trois digit, il faut tout d'un coup configurer le flux à la volée. En première instance, c'est magique. Mais à l'usage, c'est pénible et illisible.