
thanks, it sure helped a lot. In my case I had to wrap proto::terminal inside a my_domain<> wrapper. This was required with the simplified code I posted, but I'm mentioning it for the benefit of others trying to learn proto. I still have a couple of issues: - although udt_ex(v) is now parsed, udt_ex(v1,v2) is not. I've tried to #define BOOST_PROTO_MAX_ARITY to be 2, but this also doesn't seem to work (and if debug.hpp is included you get an ambiguous overload between debug.hpp:122 and rlocal.hpp:775. The ambiguity goes away with numbers larger than 2). (anyhow BOOST_PROTO_MAX_ARITY seems to be defined to 5 in proto_fwd.hpp) - with your suggestion, when an object of class udt_ex is encountered in an expression, the corresponding node in the parse tree has a udt_tag. In my case udt contains additional data, not only extra methods and types. What is a good way for getting that information into the parse tree? Is specializing as_expr going in the right direction? Basically, I'd like something like var/val in the lambda.cpp test, but without having to explicitly decorate expressions. Thanks again, Maurizio