Eléments syntaxiques en paramètres template ? [C++/template] - C++ - Programmation
Marsh Posté le 31-08-2004 à 07:04:42
Marsh Posté le 31-08-2004 à 09:09:50
non ça n'existe pas... à raison, puisque ce que tu décris, c'est tout simplement un macro ...
Marsh Posté le 31-08-2004 à 09:29:38
A mon avis la solution elegante de faire cela serait plutot que ton element syntaxique soit l'appel d'une methode statique d'une classe que tu passes en parametre.
Code :
|
Pas essaye de compiler mais ca doit marcher
mynab
Marsh Posté le 31-08-2004 à 09:33:16
Aux "public:" pres qui manquent dans add et sub ca compile et ca marche.
Ok pas aussi pratique que ce que tu veux faire parce qu'il faut declarer les classes add et sub mais bon.
Marsh Posté le 31-08-2004 à 09:37:00
c'eut été trop facile d'utiliser std::plus et std::minus ainsi que tout autre fonctor (et operator() )
Marsh Posté le 31-08-2004 à 09:41:22
Oui c'est vrai un functor revient au meme. Mais bon c'est vrai qu'en y reflechissant on s'eloigne ce que veux faire evadream a la base...
Le pb des macros dans ce cas la c'est que je pense pas que ce soit super elegant meme si effectivement ca resoud le probleme et que j'ai deja utilise ce genre de trucs.
Marsh Posté le 31-08-2004 à 09:45:01
Remarque: dans le cas d'un functor la methode ne peut pas etre statique si je ne m'abuse et donc ca limite la chose non?
Marsh Posté le 31-08-2004 à 09:52:16
non, parce que justement avec, tu peux transporter des paramètre. les deux ont leur utilité
quant à
IF< A == 0, !img(x-1,y-1), img(x-1,y-1) > ne doit pas éxecuter l'opération mais juste rélection l'opération. ton IF< ... > ::result doit être un type qui permet l'opération adéquate
tu peux utiliser logical_not<T> dans ton cas
Marsh Posté le 31-08-2004 à 10:13:17
et avec un truc comme ca ?
Code :
|
Marsh Posté le 31-08-2004 à 12:41:27
Hello !
Tout d'abord merci tout le monde pour vos réponses supers précises !
Taz : non ça n'existe pas... à raison, puisque ce que tu décris, c'est tout simplement un macro ...
Ok, ca à le mérite d'être clair Rapidement, comment t'y prendrais-tu ? J'ai jamais été très doué avec le preprocesseur. Je pensais faire un truc du genre, attention les yeux :
Code :
|
Mais ca ne me semble pas possible à cause des constantes dans la déclaration, à juste titre.
mynab : Ca semble pas mal du tout ta solution, je vais voir çà !
Taz : IF< A == 0, !img(x-1,y-1), img(x-1,y-1) > ne doit pas éxecuter l'opération mais juste rélection l'opération. ton IF< ... > ::result doit être un type qui permet l'opération adéquate
Je bloque sur le type (justement) des paramètres template !img(x-1,y-1) et img(x-1,y-1) à employer ;| Comment faire pour que le code ne soit pas éxécuter ?
BlackGoddess : J'aime bien ta solution ! Merci !
J'ai plein de choses à voir aujourd'hui ! Merci encore à vous !
@++
Marsh Posté le 31-08-2004 à 13:01:07
img doit être une instance de quelque chose, ou une le nom d'un fonction. je parlais d'un truc comme à fait BG
Marsh Posté le 31-08-2004 à 13:05:32
Ok, c'est bien ce qui me semblait. Effectivement, ce qu'à proposer BlackGoddess est pas mal du tout. C'est ce qui me convient le mieux !
Merci encore à tout le monde !
Marsh Posté le 31-08-2004 à 17:42:05
:| c'est pas ce que j'explique dans mon topic sur les expressiosn templates et la MPT ???
et dans mon topic sur le filtrage digital template ?
Marsh Posté le 31-08-2004 à 17:57:24
Joel F a écrit : :| c'est pas ce que j'explique dans mon topic sur les expressiosn templates et la MPT ??? |
La recherche étant morte c'est pas évident évident
J'ai pu retrouver ton topic sur le filtrage via google mais ca ne répondait pas tout à fait à mon problème. Ton topic sur la métaprogrammation template m'a permit d'avancer sur la définition du IF template (cf. intervention de Taz sur ton topic).
J'ai pas retrouvé ton topic sur les expressions template par contre.
Voili voualou
Merci ! @+
Marsh Posté le 31-08-2004 à 03:13:12
Bonjour tout le monde,
J'ai pensé à quelque chose de farfelue. Serait-il imaginable d'utiliser les arguments templates comme des éléments syntaxiques du langage ? L'idée serait d'obtenir un effet "macro".
Imaginons que le mot clé verbatim indique un argument template "syntaxique", on peut donner l'exemple bidon (comme le reste ?) suivant :
Ca existe déja ? Il y a un moyen pour arriver au même résultat ? C'est débile ?
Je me pose cette question car je viens de récupérer un projet qui filtre des images binaires à l'aide d'opérateurs morphologiques, et y'a 16 fonctions (Golay & Co) qui différent uniquement sur un test, dans le genre :
J'aurais bien fait un modèle pour la fonction filtre prenant 9 paramètres template controlant le if, mais je ne vois pas trop comment m'y prendre, d'où ma précédente "idée" de produire des élements syntaxiques à l'aide des templates.
J'ai pensé utilisé un if version template, j'aurais aimé pouvoir faire qqchose comme çà :
Il y a peut-être (surement) une solution élégante à mon problème, mais je ne vois pas trop comment m'y prendre. Avec des macros ? Je ne suis pas un pro du préprocesseur, mais je ne peux pas utiliser de constantes (0,1,2...) dans la déclaration de celles-ci il me semble, sinon le problème pourrait être régler avec çà à priori.
Il est 3h du mat, je sais pas trop quoi penser de ce que je viens d'écrire . on verra les réponses demain, si y'en a
@+ tout le monde !
Message édité par Evadream -jbd- le 31-08-2004 à 03:46:52