2009-12-30 3 views
3

Когда я пытаюсь скомпилировать это:Как использовать 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, он работает.

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

ответ

1

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

#include <boost/fusion/mpl.hpp> 

должен устранить проблему»

+0

В том числе, что – wallyk

+0

пардон, менее чем и больше, чем стерты? включить. теперь исправлено – chila

+0

Спасибо, я отредактировал его для ясности – wallyk

 Смежные вопросы

  • Нет связанных вопросов^_^