Boost logo

Boost :

Subject: [boost] [fusion] undocumented sequence requirement: convert
From: Eric Niebler (eric_at_[hidden])
Date: 2012-08-22 16:38:35


Say I have a valid fusion sequence. I want to use an mpl algorithm on
it. I include boost/fusion/mpl.hpp and put a nested tag type in my
sequence that is an alias for fusion::fusion_sequence_tag. So far, so
good. Then I try to call mpl::pop_back on this sequence, and I find
that, despite fulfilling all the documented requirements for Fusion
ForwardSequence, the code fails to compile. That's because of this in
boost/fusion/mpl/pop_back.hpp:

    template <>
    struct pop_back_impl<fusion::fusion_sequence_tag>
    {
        template <typename Sequence>
        struct apply
        {
            typedef typename
                fusion::result_of::pop_back<Sequence>::type
            result;

            typedef typename
                fusion::result_of::convert<
                    typename fusion::detail::tag_of<Sequence>::type,
result>::type
            type;
        };
    };

My code doesn't compile because I haven't implemented the
fusion::convert customization point. Where is that documented and what
does it do?

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com

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