Boost logo

Boost :

From: Larry Evans (cppljevans_at_[hidden])
Date: 2007-05-30 09:53:16

The doc file:


  Second, unary_expr< _, CalculatorGrammar >, has a default transform
  associated with it. It is a pass-through transform. Given an
  expression of the form expr< T, arg1< X > >, the transform will invoke
  the CalculatorGrammar transform (which we haven't completely defined
  yet -- patience) on X resulting in Y, and then reassemble the
  expression as expr< T, arg1< Y > >.

yet unary_expr<_, CalculatorGrammar >, defined in traits.hpp, is:

         template<typename Tag, typename T>
         struct unary_expr
         : has_pass_through_transform<unary_expr<Tag, T> >

so it isn't of the form, expr<T,arg1<X> > for any T or X. OTOH,
the nested unary_expr typedef:

   typedef expr<Tag, args1<T> > type;

is of this form; so, I guess what's meant by "Given an expression of the
form.." is "Given an expression of type, E, where E::type is of the

Boost list run by bdawes at, gregod at, cpdaniel at, john at