As you suggest, I think having a different kind of value description class (eg POINTER instead of string, etc) would be better than having these classes.  In general I think having unowned members will be difficult, since you need to describe how their ownership is linked to the base class.  Not sure what to do about it, though... what was your use case for needing raw pointers?