question un peu tordue sur les templates [C++] - C++ - Programmation
Marsh Posté le 30-05-2007 à 14:23:59
Intéressant. Je ne sais pas si c'est possible en C++. D'autres A essayer en tout cas. Peut-être avec un typedef ?
Perso, je ne me souviens pas avoir vu ce genre de choses, mais j'éviterais cela autant que possible, dans la mesure où ça rend le code difficile à lire (T1<T2> ...), et les erreurs de compilo doivent être rapidement affreuses.
Marsh Posté le 30-05-2007 à 16:02:14
Oui c'est possible.
Code :
|
Template template parameters (cf. C++ Templates The complete guide D. Vandervoorde). J'ai peu utiliser, comme toujours avec les templates c'est beau c'est générique, mais c'est un peu tricky et trés (trop) difficile à débugger...
Marsh Posté le 30-05-2007 à 16:49:12
ElDesdichado a écrit : |
ou pas gdb, boost_static_assert et des outils de métaprog génériques comme MPL et ca roulez
Marsh Posté le 30-05-2007 à 18:25:12
Joel F a écrit : ou pas gdb, boost_static_assert et des outils de métaprog génériques comme MPL et ca roulez |
Connaît pas MPL. Par contre en parlant de boost, j'adore boost::bind (utilisé avec boost::functor) et mon VS a eu (ainsi que moi-même) beaucoupe de mal pour débugger l'animal et supprimer des memory leaks..
Marsh Posté le 30-05-2007 à 20:03:12
sans vouloir troller , VS+template complexes = ugh.
le dernier gdb mange bien tout ça et rentre bien là ou il faut par contre
MPL c'ets une boost::library qui fournit les fonctionelles de abses pr manipuler des types de manières efficaces avec apr exemple les liste de types, les static control structure et leur interactions avec boost::tuple.
Marsh Posté le 30-05-2007 à 22:19:28
Ok merci je testerai le code demain
En fait je suis d'accord que c'est pas très joli mais comme c'est pour une "fonction" qui fait juste une ligne, je cherche plus une utilisation de type #define.
Et je trouve ça moche une dizaine de définition de fonctions qui s'appellent pareil, qui ont le même corps, et qui ont juste un paramètre qui change
Marsh Posté le 30-05-2007 à 22:48:35
il faut toujours privilégier les templates au define donc continue comme ça
Marsh Posté le 31-05-2007 à 10:40:27
Merci je testerai MPL. Pour VS, je n'ai pas le choix donc je continuerai à débugger avec difficulté (malheuresement). En général je n'ai jamais eu de problèmes avec VSet des templates relativement courant, mais lorsque j'ai codé un moteur de calcul utilisant de la métaprog, et des genres de typelists (genre template de template de etc...) j'ai pleuré (menfin maintenant ca marche).
Marsh Posté le 31-05-2007 à 12:10:59
ElDesdichado a écrit : |
copaing
c'etait quoi si c'ets aps indiscret
Marsh Posté le 31-05-2007 à 12:27:10
un moteur générique pour résoudre des EDPs pour n'importe quel domaine donc en gros génération automatique d'une Mesh avec raffinement pour capturer les couches limites, possibilités de changer n'importe quoi comme la diffusion, les conditions aux limites, les schemas de discretisation, tout en polymorphisme statique. En gros on écrit un constructeur dans lequel on crée une typelist de propriété du domaine et le code machine se génère au moment de la compilation. Permet d'écrire peu de chose et c'est rapide genre 2-5s pour un probleme de taille 400*2000, menfin un peu compliquer à débugger le bouzin (j'étais un peu maso)...
Marsh Posté le 31-05-2007 à 13:15:34
c'est de l'indus ou de la recherche - histoire d'affiner ma biblio su rle sujet -
Marsh Posté le 01-06-2007 à 22:31:47
ElDesdichado a écrit : un moteur générique pour résoudre des EDPs pour n'importe quel domaine donc en gros génération automatique d'une Mesh avec raffinement pour capturer les couches limites, possibilités de changer n'importe quoi comme la diffusion, les conditions aux limites, les schemas de discretisation, tout en polymorphisme statique. En gros on écrit un constructeur dans lequel on crée une typelist de propriété du domaine et le code machine se génère au moment de la compilation. Permet d'écrire peu de chose et c'est rapide genre 2-5s pour un probleme de taille 400*2000, menfin un peu compliquer à débugger le bouzin (j'étais un peu maso)... |
Hé bé, c'est pas du code de rigolo, ça. Tu connais FreeFEM++ ?
Marsh Posté le 03-06-2007 à 20:08:36
Hum alors ça marche ?
Franchement j'ai essayé mais pour l'instant j'abandonne : trop d'erreur interne de compilo...
Marsh Posté le 03-06-2007 à 20:24:21
de quoi ? les parametres template template ? ca marche farpaitement sur les vrais compilos
Marsh Posté le 04-06-2007 à 09:11:49
Connaît pas FreeFEM++. M'enfin dans mon cas on doit en général conserver du code proprio qui doit être optimisé pour nos applications en particulier, c'est-à-dire par exemple inclure également dans le code des choses assez bizzares comme des modèles de volatilité locale, des modèles de frontières libres, des résolutions d'équations d'Hamilton Jacobi Bellman, etc... C'est pas vraiment ultra répandu et en général tu as besoin de connaître les problèmes mathématiques bien précis sur lesquels tu travailles (c'est assez différents des problèmes physiques), et effectivement je suis maso (et un peu matheux...). En tout cas merci pour la piste j'y regarderai de plus près. Et les templates de templates marchent sur mon compilo VS7.
[Edit]
J'ai jeté un coup d'oeil à FEM++, ca semble plutôt cool. Toutefois si en général j'ai des problèmes qui peuvent être compliqué avec des diffusions tordues ou des inéquations variationelles, on applique rarement des FEM dans mon domaine mais plutôt des FDM, on a pas vraiment besoin des FEM ou des FVM pour ce que je fais. En tout cas c'était bien cool de ta part de me suggérer cette librairie, le pire c'est que le labo JL Lions se trouvait à quelques étages du mien durant mon année à chevaleret.
Marsh Posté le 04-06-2007 à 10:48:03
ElDesdichado a écrit : Et les templates de templates marchent sur mon compilo VS7. |
je vais le rajouter sur ma liste de vrai compilateur
Marsh Posté le 29-05-2007 à 15:31:26
Bonjour,
je voudrais créer une fonction de cette forme :
avec T1 qui est elle-même une classe de type template :
par exemple je voudrais pouvoir faire :
est-ce possible ?
merci
Message édité par freewol le 29-05-2007 à 15:32:53