Boost logo

Boost :

Subject: Re: [boost] [fusion] [intro] ADAPT_STRUCT extensions
From: Joel de Guzman (joel_at_[hidden])
Date: 2010-07-29 20:55:07


On 7/30/2010 6:35 AM, Stefan Strasser wrote:
> Zitat von Hartmut Kaiser <hartmut.kaiser_at_[hidden]>:
>
>>> 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?
>
> no I had not, I was using 1.41. where can I see those? can't seem to find them in 1.43 or
> the trunk.
>
> do these solve one of the two issues above?
> in case you brought it up because then you could have public accessor functions to private
> members, I'd still propose to add a way to adapt private members as shown above.
> I'd like to use this for what is apparently known as the "scrap your boilerplate" pattern
> in the functional programming world (see the previous [intro] discussion), which requires
> adapting each member in every class used in such an algorithm. there obviously shouldn't
> be public accessors for all members.

I like it! I think this patch provides solutions not yet available.
You should coordinate with Christopher Schmidt, he did the new
adapt class macros and figure out how to make it all fit and have
a consistent interface.

Regards,

-- 
Joel de Guzman
http://www.boostpro.com
http://spirit.sf.net

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk