|
Boost : |
Subject: Re: [boost] [fusion] [intro] ADAPT_STRUCT extensions
From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2010-07-29 17:48:54
> in the discussion about the library I called "Intro" at the time it has
> been suggested to use BOOST_FUSION_ADAPT_STRUCT of Boost.Fusion for data
> member access.
>
> based on that I'd like to propose two extensions to ADAPT_STRUCT, which I
> think are useful beyond my use case:
>
> 1)
>
> ADAPT_STRUCT can adapt public data members only.
>
> with the modifications I uploaded here:
> http://svn.boost.org/svn/boost/sandbox/intro/boost/fusion/adapted/struct/
>
> all data members can be adapted. for example:
>
> class A{
> private:
> friend class fusion::access;
> int a;
> };
>
> BOOST_FUSION_ADAPT_STRUCT(A,(int,a) )
>
> 2)
>
> adaption of a class including its base class members. for example:
>
> struct A{ int a; };
> struct B{ int b; };
> struct C : A,B{ int c; }
>
> BOOST_FUSION_ADAPT_STRUCT(A,(int,a) )
> BOOST_FUSION_ADAPT_STRUCT(B,(int,b) )
> BOOST_FUSION_ADAPT_DERIVED(
> C, (A)(B),
> (int,c)
> )
>
> an instance of C is now a fusion sequence of size 3.
> http://svn.boost.org/svn/boost/sandbox/intro/boost/fusion/adapted/struct/a
> dapt_derived.hpp
>
> private inheritance is supported as above, virtual inheritance is not.
> I'm not sure if virtual inheritance can be supported.
Have you seen the new BOOST_FUSION_ADAPT_CLASS() family of utilities which
allow using (member-) functions instead of direct access to the data members
of a class/struct?
Regards Hartmut
---------------
Meet me at BoostCon
www.boostcon.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk