2009-06-24 4 views
3

Как сгенерировать fusion::vector от mpl::vector? Как сгенерировать mpl::vector от fusion::vector?сгенерируйте слияние :: вектор из mpl :: vector

BOOST_MPL_ASSERT((is_same< 
        fusion::vector<int, char>, 
        generate_fusion_vector<mpl::vector<int, char> >::type >)); 

BOOST_MPL_ASSERT((is_same< 
        mpl::vector<int, char>, 
        generate_mpl_vector<fusion::vector<int, char> >::type >)); 

мне нужно generate_fusion_vector и generate_mpl_vector метафункции. Я могу написать свои собственные метафайлы, но я подозреваю, что они уже существуют.

У меня был опыт создания fusion::map с помощью result_of::as_map раньше, но в текущей импульс (ствол, 1,39 и) такая ошибка происходит:

D:\Libraries\boost_trunk\boost/fusion/sequence/intrinsic/size.hpp(56) : error C2903: 'apply' : symbol is neither a class template nor a function template 
     D:\Libraries\boost_trunk\boost/fusion/container/vector/convert.hpp(23) : see reference to class template instantiation 'boost::fusion::result_of::size' being compiled 
     with 
     [ 
      Sequence=boost::mpl::vector 
     ] 
     temp.cpp(71) : see reference to class template instantiation 'boost::fusion::result_of::as_vector' being compiled 

Я не понимаю, что происходит?

+0

Вам нужно рассчитать тип fusion :: vector с теми же типами, что и mpl :: vector (mpl :: векторы имеют только типы, а не значения), или вы имели в виду mpl :: vector_c? –

+0

Я хочу рассчитать тип. – Andreo

ответ

7

фьюжн принимает типы MPL в качестве аргументов функций, которые вы могли бы попробовать это:

BOOST_MPL_ASSERT((is_same< 
fusion::vector<int, char>, 
fusion::result_of::as_vector<mpl::vector<int, char> >::type >)); 

Edit:

Я думаю, что причина этого не работает для вас, что вы должны включать в себя определенный заголовок файлы для обеспечения совместимости mpl при слиянии.

#include <boost/fusion/adapted/mpl.hpp> 
#include <boost/fusion/include/mpl.hpp> 
+0

Я сгенерировал fusion :: map с помощью result_of :: as_map раньше, но в текущем усилии (соединительная линия, 1.39) также возникает такая ошибка:

 D:\Libraries\boost_trunk\boost/fusion/sequence/intrinsic/size.hpp(56) : error C2903: 'apply' : symbol is neither a class template nor a function template D:\Libraries\boost_trunk\boost/fusion/container/vector/convert.hpp(23) : see reference to class template instantiation 'boost::fusion::result_of::size' being compiled with [ Sequence=boost::mpl::vector ] 
Я не понимаю, что происходит? – Andreo

0

Я не знаю, если вы все еще делаете CHAR, INT, но я побежал в ту же ошибку, и моя проблема заключалась в том, что я пытался сделать длину 11 вектор, но FUSION_MAX_VECTOR_SIZE был 10.

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

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