Listing 4: Two examples of creator functions

template  <class ExprT1,class ExprT2>
BinaryExpr<ExprT1,ExprT2,plus<double> >
makeSum(ExprT1 e1, ExprT2 e2) 
{ return BinaryExpr<ExprT1,ExprT2,plus<double> >(e1,e2); } 

template  <class ExprT1,class ExprT2>
BinaryExpr <ExprT1,ExprT2,multiplies<double> >
makeProd(ExprT1 e1, ExprT2 e2) 
{ return 
   BinaryExpr<ExprT1,ExprT2,multiplies<double> >(e1,e2); }

— End of Listing —