I tried to turn a complex grammar transform : struct grammar : or_< ... ,bp::when< bp::nary_expr< bp::_, bp::vararg< grammar > > , bp::_default< grammar > ( _bp::functional::unpack_expr<bp::tag::function>( push_front( bp::_ , bp::_make_terminal ( some_type< bp::tag_of<bp::_> >() ) ) ) ) > into a single primitive transform but I end up stuck cause it seems some of those transform (make_terminal) don't follow the classic proto::result_of/proto namespace acces to compute it's return type and calling it. How should I handle these ? My intuition was that the transform oeprator() will call the equivalent function onto its expr parameters while its result struct compute the result_of by chaining the transform result_of results. Ultimately, I want this to be a tempalte trasnform that take some_type as a parameter : bp::when< bp::nary_expr< bp::_, bp::vararg< grammar > > , traversal<some_type>(bp) > Thanks in advance -- ___________________________________________ Joel Falcou - Assistant Professor PARALL Team - LRI - Universite Paris Sud XI Tel : (+33)1 69 15 66 35