Le 30 mai 2016 à 23:26:07 rangerprice a écrit :
Tu devrais t'amuser à faire ton compilateur calculer à t'as place avec des templates, ça améliora bien ton lvl dans la méta prog.
Par exemple à la compilation tu fais ton compilateur travailler sur une expression mathématique, ou tu peux aussi lui faire bêtement trier des mots dans un dictionnaire 
merci pour les suggestions, ouais je pense que je vais faire ça, intégrer un peu plus de programmation générique et de meta programmation si nécessaire dans mes anciens projets
En utilisant les templates biensure.
Jettes à un coup d'oeil à ce petit code qui calcule le carrée de 5 que j'ai fais vite fais http://cpp.sh/2ys2
J'ai testé le code et ça retourne bien le carrée de 5.(clique sur "run") Et puisque tout les calcules sont fait par le compilateur, alors c'est de la meta programmation.
la variable carree dans cet exemple sera calculé à l’exécution car il y a un embranchement de if qui n'est valué qu'à l’exécution, carree n'aura une valeur qu'à l'execution
pour t'en convaincre tu peux ajouter "constexpr" au début de carree : http://cpp.sh/
ça fera cette erreur de compilation : error: call to non-constexpr function 'int f(NUMBER, BOOL) [with NUMBER = int; BOOL = bool]'
mais il n'y a pas grand chose normalement à changer dans ton exemple : http://cpp.sh/92k3t
ou comme ça http://cpp.sh/9g4d après c'est plus pour des calculs récursif, où là c'est nécessaire d'avoir une expression constante en valeur de retour pour qu'elle soit paramètre template à la récursion suivante
Le 31 mai 2016 à 01:29:23 godrik a écrit :
Je ne connais pas de bon projet pour s'entrainer en meta programmation. C'est une technique qui apparait dans certains projets et pas dans d'autre. Perso, je m'en suis servi pas mal dans spart ( http://bmi.osu.edu/hpc/software/spart/ ) pour abstraire les concepts de "probleme 1D" qui peuvent en fait etre des projections de probleme de plus haute dimension et ne pas avoir a reecrire le code.
ah j'ai fait un projet qui y ressemble, sauf qu'au lieu de paver l'espace avec des rectangles/parallepipede/etc, je devais paver l'espace avec des simplexes et que le code soit générique pour n'importe quelle dimension
d'ailleurs je pense que ça peut être une bonne idée que je fasse un topic de code review sur ce projet pour que vous me disiez où il peut être amélioré ou corrigé s'il y a des sources d'erreurs etc
Le 31 mai 2016 à 03:38:08 LGV a écrit :
je recommenderais plutot la lecture de Modern C++ Design de Andrei Alexandrescu - une reference classique sur la metaprogrammation dans ce langage
merci pour la référence, je connaissais ce livre de nom mais je ne savais pas qu'il s'agissait d'une référence en metaprogrammation
Dans un projet on n'applique que ce que l'on sait deja
oui, dans un projet professionnel j'imagine, là je parlais plutôt de projet à but pédagogique, donc mettre en exercice des choses que je ne maîtrise pas très bien pour apprendre et consolider justement