
Steven Watanabe-4 wrote:
AMDG
Over the last few months I've re-done my type erasure library from scratch, fixing a lot of the bad design decisions I made originally. Here's a basic sample of what you can do with it:
simulate boost::any:
type_erasure::any< mpl::vector<copy_constructible<>, typeid_<> > > x(10);
simulate boost::function<void(int)>:
type_erasure::any< mpl::vector<copy_constructible<>, typeid_<>, callable<void(int)> > > f(foo);
The code is available from the Vault: http://tinyurl.com/3z9jcwp
The library is nearly complete. I've included pre-built html documentation in the zip. Questions, comments, and criticism are welcome.
Hi, I've just taken a diagonal read at the documentation and the library seems really promising. I like how concepts are materialized using a template class that implements the default behavior of the concept and that can be specialized to map type to concepts. I understand that you need a second step to introduce the functions themselves specializing concept_interface. What I don't understand is the overloading issues. Could you use a concrete example to try to clarify the problems you have addressed? I would try to study more deeply your design in order to see the advantage it could provide to my library. While developing Boost.Opaque (available on the sandbox https://svn.boost.org/svn/boost/sandbox/opaque/libs/opaque/doc/html/index.ht...), I was confronted to a similar problem, that is, how to add in a declarative way, more operations to the underlying class. I have reached to manage with this using what I have called a meta-mixin. A MetaMixin is a meta-function having as nested type a Mixin. The archetype of a MetaMixin is struct MetaMixinArchetype { template (*typename Final, typename Base*) struct type : Base { ... }; }; Metamixins are is a similar way to your concepts, passing them in a mpl-sequence. I will appreciate a lot if you can take a look and comment the design of Boost.Opaque. Best, Vicente -- View this message in context: http://boost.2283326.n4.nabble.com/RFC-type-erasure-tp3542886p3545573.html Sent from the Boost - Dev mailing list archive at Nabble.com.