Estoy intentando crear una lista que contenga las permutaciones de una lista de tipos determinada.Permutaciones de una lista de tipos usando boost :: mpl
El siguiente código parece funcionar, aunque sin el resultado deseado, cuando utilizo una lista especificada en lugar de generar una nueva lista quitando de la entrada real. Esto se demuestra por la diferencia entre permutation_helper y broken_helper a continuación.
¿Alguien sabe por qué mpl::remove
no parece funcionar como se espera en esta circunstancia?
He usado la declaración para determinar qué devuelve la función, la lista de tipos no es el resultado esperado. Este es el mensaje de la aserción devoluciones para broken_helper:
testcase.cpp: In function ‘int main()’:
testcase.cpp:45: error: no matching function for call to ‘assertion_failed(mpl_::failed************ boost::mpl::equal<boost::mpl::joint_view<boost::mpl::joint_view<boost::mpl::list0<mpl_::na>, boost::mpl::l_end>, boost::mpl::l_end>, boost::mpl::list2<test_type1, test_type2>, boost::is_same<mpl_::arg<-0x00000000000000001>, mpl_::arg<-0x00000000000000001> > >::************)’
La salida usando permutation_helper es una lista real:
testcase.cpp: In function ‘int main()’:
testcase.cpp:45: error: no matching function for call to ‘assertion_failed(mpl_::failed************ boost::mpl::equal<boost::mpl::list2<test_type1, test_type2>, boost::mpl::joint_view<boost::mpl::joint_view<boost::mpl::list0<mpl_::na>, boost::mpl::l_item<mpl_::long_<1l>, boost::mpl::l_item<mpl_::long_<2l>, test_type1, boost::mpl::list1<test_type3> >, boost::mpl::l_end> >, boost::mpl::l_item<mpl_::long_<1l>, boost::mpl::l_item<mpl_::long_<2l>, test_type2, boost::mpl::list1<test_type3> >, boost::mpl::l_end> >, boost::is_same<mpl_::arg<-0x00000000000000001>, mpl_::arg<-0x00000000000000001> > >::************)’