[EDIT] Cette discussion est un fork suite à ce message[/EDIT]
Lequel ?
Version imprimable
[EDIT] Cette discussion est un fork suite à ce message[/EDIT]
Lequel ?
[ame="http://www.amazon.fr/Template-Metaprogramming-Concepts-Techniques-Beyond/dp/0321227255"]C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond: Amazon.fr: David Abrahams, Aleksey Gurtovoy: Livres anglais et ?trangers@@AMEPARAM@@http://ecx.images-amazon.com/images/I/516I5LcsEEL.@@AMEPARAM@@516I5LcsEEL[/ame]
Si je ne m'abuse. Je sais qu'il y a de longs chapitres sur boost, mais je ne me rappelle plus leur sujet.
Sinon, le Modern C++ Programming d'Alexandrescu aborder les typelist dans les grandes largeurs.
C'est un trait, en gros, non ?
Certains traits sont des métafonctions. D'autres pas exactement, ou alors plusieurs à la fois, mais pas que. Par exemple certains traits renvoient des informations que via des fonctions statiques, et là on ne parle plus de métafonction.
C'est bien celui-là. Il parle de traits, métafonctions, wrappers de types "integral", de séquences et itérateurs (compile-time biensûr), d'algorithms (idem), de vues et adaptateurs d'itérateurs, de diagnostic (compile-time toujours), de franchir la limite entre compile-time et runtime, et enfin de DSELs !
Et lequel est le plus ardu ?
Celui là, ou celui de notre psychopathe issu des Carpates ?
Je dirais celui-là. Les deux sont "mind blowing" si t'as jamais trop fait le genre de trucs qu'ils expliquent. J'ai lu les deux à peu de temps d'intervalle (quelques mois), y'a bien 4 ans de ça maintenant...
Modern C++ Design même si ça parle beaucoup de templates, t'as quand même de l'OO auquel te raccrocher. Dans celui sur Boost.MPL, t'as pas trop ça, c'est vraiment axé métaprogrammation *à fond*!
Celui-là est donc le plus accessible ?
http://www.amazon.com/Templates-Complete-Guide-David-Vandevoorde/dp/0201734842/ref=sr_1_11?s=books&ie=UTF8&qid=1316174328&sr=1-11
Aucun des 3 n'apporte la même chose. Bien sûr, ils se recoupent tous un peu, sur les traits principalement, qui est un des éléments de base de la métaprogr. Celui que tu viens de mentionner te fait découvrir les templates jusqu'à un certain point. Celui d'Alexandrescu te montre comment passer d'une utilisation basique des templates à l'utilisation intelligente des templates dans ton design logiciel, pour rendre tes architectures plus génériques, souples, etc. Celui d'Abrahams & Gurtovoy est lui dédié à la métaprogrammation, c'est à dire l'utilisation des templates @ compile-time.
Je trouve que MC++D se lit très bien, la facon dont Alexandrescu explique les choses donne l'impression que tout ce qu'il fait découle naturellement. Je pense que c'est peut-être le premier des trois à lire. Il ne nécessite pas de gros prérequis sur la syntaxe (certain points sont rappelés au besoin), il introduit des concepts assez fort, et l'utilisation pratique de ce qu'il explique est direct (les éléments développés répondent à des problèmes classiques).
Pour le Vandevoorde, il est très interessent, mais comme il va assez loin dans la description de la syntaxe des templates ca donne quelques passages très "norme" (pas des plus passionant à lire). Et une partie du bouquin pert un peu de son interêt si on a lu MC++D.
Pour celui d'Abrahams, il faut quand même avoir déjà manipulé les templates avant de se lancer dedans, et avoir été confronté à des problèmes qui doivent être résolues à la compilation donne un plus grand interet au livre (on voit se dessiner des solutions à des problèmes grace aux éléments décrit). Une partie du livre est consacré aux éléments de base de la méta-prog, la suite à la description des éléments de boost.mpl (pas de détail sur le "comment" ses éléments sont codé). Et la fin présente comment jouer avec la limite entre compile time et runtime, en partie grace à la méta-prog.