Ho effettuato alcuni test utilizzando lo spirit mini_c sample. Purtroppo non mantiene la precedenza dell'operatore come previsto:Precedenza dell'operatore in boost :: spirit?
int main()
{
return 3 > 10 || 3 > 1;
}
viene valutato come 0.
return (3 > 10) || (3 > 1);
restituisce 1
ho provato a spostare la definizione di "||" e "& &" al vertice nel costruttore di
template <typename Iterator>
expression<Iterator>::expression(
ma questo non cambia nulla. Come può essere risolto. Sto usando boost 1.3.38.
Non ho mai usato Boost.Spirit, ma non lo faccio vedere come tutto ciò che definisce potrebbe fare la differenza qui. Non hai altro che primitive e non puoi sovraccaricare gli operatori integrati. –
Ho un'altra domanda considerando questo esempio. Forse puoi aiutare anche con quello? http://stackoverflow.com/questions/3591533/implementing-not-in-boostspirit-mini-c –