On 04/06/2012 17:52, Eric Niebler wrote:
I don't know what you mean by the "right type". If you want it held by
shared_ptr to manage lifetime, then shared_ptr is the right type, it
seems to me. Or use a wrapper around a shared_ptr, whichever.
I want all tree manipulation and transformation algorithms to see the
value as if it were a T and not a shared_ptr<T> or ref_holder<T>.
shared_ptr<T> is the right type to contain the terminal in the proto
nullary expression, but in that particular case it is not the logical
type of the value associated to that leaf node.
I want to be able to manipulate the tree using straight Proto tools
(otherwise I might as well not use Proto at all -- the point is to have
a well-defined de-facto standard framework for tree manipulation).
Those algorithms should not need to know how the value is stored in the
expressions. It is just noise as far as they're concerned.
Alternatively I'll need to provide substitutes for value,
result_of::value and _value, and ban those from my code and the
programming interface, telling developers to use mybettervalue instead
of proto's. That saddens me a bit.
proto mailing list