Boost logo

Boost Users :

Subject: Re: [Boost-users] [fusion] making an inner struct boost fusion compatible?
From: Nathan Ridge (zeratul976_at_[hidden])
Date: 2012-09-20 15:53:09


> Hi list,
>
> I have the following problem:
>
> template<class T, class U, class V>
> struct MyType{
> struct nested{
> typename MetaFunc<T>::type a;
> typename MetaFunc<U>::type b;
> typename MetaFunc<V>::type c;
> };
> };
>
> now this inner struct must be a boost fusion compatible random access
> sequence. The examples cover only structs on namespace lvel, how can i
> handle this way? Later these classes will be generated by a macro
> automatically so even dirty hacks are allowed :). But i don't want to
> clatter the namespace by pulling nested outside of the class.
>
> Is there an easy way or do i have to write the necessary mtafunctions
> to make this possible?

You should be able to use BOOST_FUSION_DEFINE_STRUCT_INLINE [1]
as follows:

template<class T, class U, class V>
struct MyType{
    BOOST_FUSION_DEFINE_STRUCT_INLINE(
        nested,
        (typename MetaFunc<T>::type, a)
        (typename MetaFunc<U>::type, b)
        (typename MetaFunc<V>::type, c)
    )
};

Note however that BOOST_FUSION_DEFINE_STRUCT_INLINE is new in Boost 1.51.

Regards,
Nate

[1] http://www.boost.org/doc/libs/1_51_0/libs/fusion/doc/html/fusion/adapted/define_struct_inline.html
                                               


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net