Как я могу использовать boost::mpl::fold с boost::fusion::map?

Когда я пытаюсь скомпилировать это:

#include <boost/fusion/container/map.hpp>
#include <boost/mpl/fold.hpp>

int main(int argc, char** argv)
{
    typedef boost::fusion::map
    <
        boost::fusion::pair<int, const char*>,
        boost::fusion::pair<long, char>
    > FuMap;

    FuMap fuMap("hello", 'w');

    unsigned val = boost::mpl::fold
    <
        FuMap, boost::mpl::int_<0>, boost::mpl::next<boost::mpl::_1>
    >::type::value;
}

Я получаю следующую ошибку:

"...boost/mpl/begin_end.hpp", line 35: Error, nofieldfnd: 
apply is not a member of 
boost::mpl::begin_impl<boost::fusion::fusion_sequence_tag>.

Из документации по слиянию: «Fusion обеспечивает полную совместимость с MPL. Последовательности Fusion полностью соответствуют последовательностям MPL, а последовательности MPL полностью совместимы с Fusion. Вы можете работать с последовательностями Fusion в MPL, если хотите работать исключительно с типами».

Когда я передаю boost::mpl::map, он работает.

Любые подсказки?


person chila    schedule 30.12.2009    source источник


Ответы (1)


Я задал тот же вопрос на http://news.gmane.org/gmane.comp.lib.boost.user и ответ от Кристофера Шмидта был правильным:

#include <boost/fusion/mpl.hpp>

должен решить вашу проблему"

person chila    schedule 30.12.2009
comment
извините, меньше и больше, чем стерли включение. теперь это исправлено - person chila; 30.12.2009