Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2108 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] question un peu tordue sur les templates

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] question un peu tordue sur les templates

n°1566718
freewol
Ceci n'est pas une citation
Posté le 29-05-2007 à 15:31:26  profilanswer
 

Bonjour,

 

je voudrais créer une fonction de cette forme :

Code :
  1. template <class T1, class T2> void set_width (T1<T2> &signal, unsigned int width)
  2. {
  3. signal.set_width (width, 1);
  4. }
 

avec T1 qui est elle-même une classe de type template :

Code :
  1. template <T> class signal_in
  2. {
  3.       T value;
  4. ...
  5. }
 

par exemple je voudrais pouvoir faire :

Code :
  1. signal_in<int> s1;
  2. set_width (s1, 16);
 

est-ce possible ?

 

merci :)


Message édité par freewol le 29-05-2007 à 15:32:53
mood
Publicité
Posté le 29-05-2007 à 15:31:26  profilanswer
 

n°1567249
el muchach​o
Comfortably Numb
Posté le 30-05-2007 à 14:23:59  profilanswer
 

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.


Message édité par el muchacho le 30-05-2007 à 14:26:47
n°1567348
ElDesdicha​do
Posté le 30-05-2007 à 16:02:14  profilanswer
 

Oui c'est possible.
 

Code :
  1. template <class T2, template<class T> class T1> void set_width (T1<T2> &signal, unsigned int width)
  2. {
  3.     signal.set_width (width, 1);
  4. }


 
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...

Message cité 1 fois
Message édité par ElDesdichado le 30-05-2007 à 16:02:47
n°1567385
Joel F
Real men use unique_ptr
Posté le 30-05-2007 à 16:49:12  profilanswer
 

ElDesdichado a écrit :


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...


 
ou pas  :o  gdb, boost_static_assert et des outils de métaprog génériques comme MPL et ca roulez ;)

n°1567451
ElDesdicha​do
Posté le 30-05-2007 à 18:25:12  profilanswer
 

Joel F a écrit :

ou pas  :o  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..

n°1567486
Joel F
Real men use unique_ptr
Posté le 30-05-2007 à 20:03:12  profilanswer
 

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.

n°1567538
freewol
Ceci n'est pas une citation
Posté le 30-05-2007 à 22:19:28  profilanswer
 

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 ;)

n°1567546
Joel F
Real men use unique_ptr
Posté le 30-05-2007 à 22:48:35  profilanswer
 

il faut toujours privilégier les templates au define donc continue comme ça :)

n°1567702
ElDesdicha​do
Posté le 31-05-2007 à 10:40:27  profilanswer
 

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).

n°1567785
Joel F
Real men use unique_ptr
Posté le 31-05-2007 à 12:10:59  profilanswer
 

ElDesdichado a écrit :


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).


 
copaing  [:spyer]  
 
c'etait quoi si c'ets aps indiscret :p

mood
Publicité
Posté le 31-05-2007 à 12:10:59  profilanswer
 

n°1567800
ElDesdicha​do
Posté le 31-05-2007 à 12:27:10  profilanswer
 

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)...

Message cité 1 fois
Message édité par ElDesdichado le 31-05-2007 à 12:28:16
n°1567855
Joel F
Real men use unique_ptr
Posté le 31-05-2007 à 13:15:34  profilanswer
 

c'est de l'indus ou de la recherche - histoire d'affiner ma biblio su rle sujet ;) -

n°1568008
ElDesdicha​do
Posté le 31-05-2007 à 15:05:24  profilanswer
 

Finance de marché.

n°1568072
Joel F
Real men use unique_ptr
Posté le 31-05-2007 à 15:59:50  profilanswer
 

ElDesdichado a écrit :

Finance de marché.


Je note :)

n°1568856
el muchach​o
Comfortably Numb
Posté le 01-06-2007 à 22:31:47  profilanswer
 

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++ ?

n°1569352
slash33
Posté le 03-06-2007 à 20:08:36  profilanswer
 

Hum alors ça marche ?
 
Franchement j'ai essayé mais pour l'instant j'abandonne : trop d'erreur interne de compilo...

n°1569360
Joel F
Real men use unique_ptr
Posté le 03-06-2007 à 20:24:21  profilanswer
 

de quoi ? les parametres template template ? ca marche farpaitement sur les vrais compilos :o

n°1569433
ElDesdicha​do
Posté le 04-06-2007 à 09:11:49  profilanswer
 

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.

Message cité 1 fois
Message édité par ElDesdichado le 04-06-2007 à 09:31:30
n°1569474
Joel F
Real men use unique_ptr
Posté le 04-06-2007 à 10:48:03  profilanswer
 

ElDesdichado a écrit :

Et les templates de templates marchent sur mon compilo VS7.


 
je vais le rajouter sur ma liste de vrai compilateur :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] question un peu tordue sur les templates

 

Sujets relatifs
Question sur les structuresEncore une question sur les pointeurs
question sur les pointeurs de fonctionsquestion sur les pointeurs
Question PHP, PEAR SOAP, Dotnet et sérialisation[J2EE] Question générale
[C++] Rigueur du compilateur par rapport aux templatesQuestion sur les listbox vba excel
Question sur les schemas d'une base de donnéesQuestion bête sur notepad++
Plus de sujets relatifs à : [C++] question un peu tordue sur les templates


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR