Joel F Real men use unique_ptr | Voila mon probleme :
J'utilise les Expressions Templates pour générer du code inline arithmétique.
Actuellement ma syntaxe ressemble à ca :
Code :
- Var<1> x;
- Var<2> y;
- Vector<char,100> a,b,c;
- a = eval(2*x+y,b,c);
|
a se retrouve affécté par le resultat du calcul de 2*b+c qui est générée de maniée optimisée à la compil.
Quelques details :
le type de 2*x+y est le suivant :
Code :
- Xpr<char,BinOp<Xpr<char,Binop<Litteral<char>,Var<1>,OpMul>>,var<2>,OpAdd>
|
pas genial à manipuler
J'aimerais arriver à une syntaxe comme celle ci :
Code :
- Expression<char> f = 2*x+y
- a = f(b,c);
|
ca parait tout con, il suffit de doter la classe expression du bon operator() et d'un operateur d'affectation qui ressemblerait à :
Code :
- template<class T>
- class Expression
- {
- public:
- template<class E>
- Expression<T> operator=( Xpr<T,E> expr )
- {
- inner_expr = expr;
- }
- template<int S>
- Vector<T,S> operator()( Vector<T,S> v1,Vector<T,S> v2 )
- {
- // code bidon simplifiée
- return inner_expr.eval(v1,v2);
- }
- private:
- ????? inner_expr;
|
Question ... quel doit etre le type de inner_expr ???
Comment affecter un objet template de type quelconque à une donnée de type fixe ???
Merci d'avance. |