In the wikipedia article, fornisce alcune classi di modelli. Voglio usarlo nel codice reale. Come lo posso fare? Ho trovato che non c'è quasi modo per me di creare un'istanza di un oggetto Vec
.Come utilizzare effettivamente Expression Template
5
A
risposta
2
Il Wikibooks article on Expression Templates fornisce un quadro più chiaro, soprattutto l'ultima parte:
L'esempio di cui sopra non mostra come i tipi ricorsiva vengono generati a tempo di compilazione. Inoltre, expr non sembra affatto un'espressione matematica, ma è davvero uno. Il codice che segue mostra come i tipi sono composti in modo ricorsivo usando l'istanza ripetitiva del seguente operatore + sovraccarico.
template< class A, class B >
DExpression<DBinaryExpression<DExpression<A>, DExpression<B>, Add> >
operator + (DExpression<A> a, DExpression<B> b)
{
typedef DBinaryExpression <DExpression<A>, DExpression<B>, Add> ExprT;
return DExpression<ExprT>(ExprT(a,b));
}
che questo sovraccarico operatore + fa due cose - aggiunge zucchero sintattico e consente composizione tipo ricorsivo, delimitata da limiti del compilatore. Può quindi essere utilizzato per sostituire la chiamata a valutare come segue:
evaluate (a.begin(), a.end(), x + l + x);
/// It is (2*x + 50.00), which does look like a mathematical expression.
è possibile per voi fornire un esempio di esecuzione per il codice che http://en.wikipedia.org/wiki/Expression_templates? Come farlo funzionare in questo caso? Grazie. –