Alexander Nasonov wrote:
> You can create your own framework for dynamic_any using
> dynamic_any::function. In a combination with simple and typesafe interface
> it could make great library. Basic idea is here:
> 
> namespace your_framework
> {
>   // ...
>   namespace detail
>   {
>     // ...
>     struct raw_convert
>       : boost::dynamic_any::function
>         <
>           convert,
>           void * (boost::dynamic_any::arg &)
>         >

I checked out dynamic_any from CVS but the function<...> syntax seems to be
missing, so I replaced it by function1<...>. Is there something missing in
the repository?

>     {
>       raw_convert(const std::type_info & convert_to);
> 
>       template<typename T>
>       void * call(T & content)
>       {
>         const std::type_info & convert_from = typeid(T);
>         convert_function fun =
>           lookup_convert_function(convert_from, convert_to_);
>         return fun(&content);
>       }
>       // ...
>     };
> 
>   } // namespace detail
> 
>   typedef boost::dynamic_any::any<
>     boost::mpl::list<detail::raw_convert>
>   > any;
> 
>   template<typename T>
>   T extract(any & a)
>   {
>     const std::type_info & convert_to = typeid(T):
>     void * raw_ptr = detail::raw_convert(convert_to)(a);
>     // ... (various checks)
>     T * ptr = (T *) raw_ptr;
>     return *ptr;
>   }
> 
> }

After some trimming, this works perfectly! 
dynamic_any is truly awesome!

Thanks for the advice.
Best regards.
--Remy


Remove anti-spam sequence in reply address for a timely response.


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to