
Maurizio Vitale wrote:
Eric, I can get the type of a proto expression (wrapped in a user-defined skin) using BOOST_TYPEOF, but then I noticed BOOST_PROTO_TYPEOF in context.hpp.
Which one is supposed to be used?
BOOST_PROTO_TYPEOF fails on me when trying to emulate the way it is used inside context.hpp.
Here is code that shows what I'm trying. If BOOST_PROTO_TYPEOF is internal only, just let me know and forget the code below.
BOOST_PROTO_TYPEOF is internal only. I'll rename it, and #undef it at the end of context.hpp. You should #include proto_typeof.hpp and use BOOST_PROTO_AUTO(), like this: BOOST_PROTO_AUTO( expr, a+b*c ); This is equivalent to: BOOST_AUTO( expr, boost::proto::deep_copy(a+b*c) ); Nodes in proto's expression tree are held by reference, so that building an expression tree requires no copying. But some nodes are temporaries. deep_copy() forces all nodes to be held by value, which is necessary if you're storing them in a local variable like this. HTH, -- Eric Niebler Boost Consulting www.boost-consulting.com