
christopher diggins wrote:
Hello all,
I just realized that an empty BIL interface,
BOOST_IDL_BEGIN(IAnything) BOOST_IDL_EMPTY(IAnything)
has some common ground with:
boost::any
Where boost::any stores a copy of a value of practical any type for later extraction, IAnything can point to just about anything.
Yes, I noticed this just a few days ago ;-) One can think of smart references as generalizations of any in which - the ownership policy can vary; e.g., it could be reference-counted instead of clone-on-copy - the type of admissible objects can restricted using interfaces - the syntax for binding is slightly different For instance, a reference-counted any that can bind to anything is shared_obj<IAnything>. I'm thinking of adding a template boost::interfaces::any, which has cloning semantics and uses the same syntax as any for binding, i.e., assignment and construction from a const reference. template<typename Interface = IAnything> class any; (I think boost::interfaces::null might be a better name for IAnything.) However, maybe what is needed instead is just a policy-based smart reference. Jonathan