2009-06-24 9 views
3

fusion::vectorを生成する方法mpl::vectorから? fusion::vectorからmpl::vectorを生成するには?mpl :: vectorからfusion :: 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_vectorgenerate_mpl_vectorメタ関数を必要としています。 私自身のメタ機能を書くことはできますが、それらはすでに存在すると思われます。

私は前に助けresult_of::as_mapfusion::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

ましたあなたはmpl :: vectorと同じ型の融合:: vectorの型を計算する必要がありますか(mpl :: vectorsは型だけで値ではありません)、または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 >)); 

編集:

を私はこれがあなたのために働いていない理由は、あなたが特定のヘッダーを含める必要があることだと思います融合時のmpl互換性を可能にするファイル。

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

私はhelp_of_of :: as_mapを使ってfusion :: mapを生成しましたが、現行のboost(トランク、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

関連する問題