
Zitat von Christopher Schmidt <mr.chr.schmidt@online.de>:
I patched the code in the trunk to enable the adaption of private attributes. The adaptee just needs to friend "struct boost::fusion::extension::access". See changeset 64490 (https://svn.boost.org/trac/boost/changeset/64490) for details.
great! one small thing, could you change "struct access" to "class access"? MSVC complains if the key differs between the definition and the friend declaration, and I think people are more used to "friend class" (in general, and because of "class serialization::access") is there a rationale for the "extension" namespace somewhere online? anything that uses the extension mechanism is in the extension namespace?
Regarding the second feature request: I am not in favor of adding yet another set of BOOST_FUSION_ADAPT_xxx-macros.
struct A{int x;}; struct B{int y;}; struct C : A,B{int z;}; BOOST_FUSION_ADAPT_STRUCT(A, (int,x)) BOOST_FUSION_ADAPT_STRUCT(B, (int,y))
I understand the problem, but I don't think we have a solution yet. thanks for the idea with segmented sequences, but it looks like a workaround to me, because what does...:
BOOST_FUSION_ADAPT_STRUCT(C, (int,z))
...mean? it says that it adapts the struct C, but it doesn't adapt C, it adapts the most-derived-level of C. is there even a use case for this? why would you want to do that? if there isn't you could say that ADAPT_STRUCT can not be used for derived classes. you need another macro. adapting the whole struct C the way you suggested would always require writing (if I hide all your code behind 1 new macro): BOOST_FUSION_ADAPT_STRUCT_NAMED(C,BOOST_PP_EMPTY(),C_derlevel, (int,z) ) BOOST_FUSION_ADAPT_ALL_OF_STRUCT(C,C_derlevel,(A)(B) ) I'd prefer adding new macros to that, e.g. ADAPT_SUBCLASS. wrt a solution without adding new macros I only see one using C99 variadic macros. do you know what's the state of those? last I checked the compilers I use implemented them, and I think they will be part of c++0x because they are part of C99. but there was also a bug in MSVC's implementation which I don't know can be worked around. with variadic macros the adaption of C could look like this: BOOST_FUSION_ADAPT_STRUCT(C, (A) (B) (int,z) ) with no new macros. Stefan