Afficher un message
Vieux 30/04/2008, 08h54   #2
Ael Rowen Terence
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Composition de function avec un "Non-Type Template Parameters"


"plouf" <plouf79@yahoo.fr> a écrit dans le message de news:
LZLRj.106$yk.36@nntpserver.swip.net...
> Bonjour à tous,
>
> J'ai essayé de faire un template qui donne la fonction composée de deux
> fonction (sans utilisé de "functor"). Je suis arrivé à ça :
>
> #include <iostream>
>
> template<typename T1,typename T2,typename T3, T1 f1(T2), T2 f2(T3)>
> T1 compose_fct(T3 arg)
> {
> return f1(f2(arg));
> };
>
> int twice(int a)
> {
> return 2*a;
> }
>
> int square(int a)
> {
> return a*a;
> }
>
> int main()
> {
> int (*sqr_tw)(int) = compose_fct<int,int,int,square,twice>;
>
> std::cout << sqr_tw(4) << " :: " << square(twice(4)) << std::endl;
> std::cout << sqr_tw(5) << " :: " << square(twice(5)) << std::endl;
> std::cout << sqr_tw(6) << " :: " << square(twice(6)) << std::endl;
>
> return 0;
> }
>
> (testé avec gcc 3.4.4 et VS2005)
>
> Je trouve dommage d'être obligé de mettre ces 3 "int" dans
> compose_fct<int,int,int,square,twice> alors qu'on a toutes les
> informations nécéssaire avec le type des functions.
>
> Personne n'a une idée pour améliorer ça ?



Très intéressant.
Bravo !


  Réponse avec citation
 
Page generated in 0,04689 seconds with 9 queries