Pergunta

Como gerar fusion::vector de mpl::vector? Como gerar mpl::vector de 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 >));

Eu preciso generate_fusion_vector e generate_mpl_vector metafunções. Posso escrever meus próprios metafunções, mas eu suspeito que já existe.

Eu tive uma experiência de gerar fusion::map com a ajuda result_of::as_map antes, mas no impulso atual (tronco, 1,39, também) tal erro ocorrer:

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

Eu não entendo o que está acontecendo?

Foi útil?

Solução

Como fusão aceita tipos MPL como argumentos para funções que você poderia tentar o seguinte:

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

Editar:

Eu acho que a razão pela qual isso não está funcionando para você é que você tem que incluir certos arquivos de cabeçalho para permitir a compatibilidade mpl na fusão.

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

Outras dicas

Eu não sei se você ainda está fazendo char, int, mas eu corri para o mesmo erro e meu problema era que eu tentei fazer um vetor comprimento 11, mas FUSION_MAX_VECTOR_SIZE foi de 10.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top