Evadream -jbd- | 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 :
Code :
- template <verbatim STX>
- void foo()
- {
- STX ;
- }
- ...
- foo< if (1) > bar ;
|
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 :
Code :
- void filtre_1(image& img)
- {
- for(int x...) for(int y...)
- // au plus 9 tests, voisinage 3x3
- if( img(x,y) && !img(x-1,y-1) && img(x-1,y) .... ) img(x,y) = ... ;
- }
|
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 çà :
Code :
- // c'est n'importe quoi, mais c'est l'idée
- template<bool t, code si t == true, code si t == false>
- struct IF ;
- //... la suite qui va bien
- template<int A, int B, int C,
- int D, int E, int F,
- int G, int H, int I>
- void filter(image& img)
- {
- for(int x...) for(int y...)
- // on continue dans l'hypothétique
- if ( IF< A == 0, !img(x-1,y-1), img(x-1,y-1) > &&
- IF< B == 0, !img(x,y-1), img(x,y-1) > && ...
- ) img(x,y) = ...
- }
- filter<0,0,1
- 0,1,1
- 0,0,1> L1 ;
- ....
|
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
|