I think 3b is actually not that hard. I would prefer to do it as an annotation, rather than new syntax, since it is C++-specific, as far as I can tell. The C++ code generator actually already has support for generating structs with pointers to each field (this is how RPC argument structures work: they have pointers to the actual arguments). We'd just have to generalize it to work on a field-by-field basis. Personally, I would prefer to use auto pointers over raw pointers with a destructor, but the latter is a shorter distance from where we are now and would be a good first cut.
I think the problems blocking this feature are more organizational. We (the maintainers) have to decide whether we want to commit to making tree structures a supported construct in Thrift, do the actual implementation, and figure out what to do with languages that aren't being actively supported. --David
